ExpertiDict

Go · Intermediário · Português · Técnico

struct vazia

/ˈstɾʌkt va.ˈzi.ɐ/substantivo

O tipo struct{}, sem campos, ocupa zero bytes. Serve como valor de sinalização ou para criar conjuntos com map[T]struct{}.

Onde usar

'done chan struct{}' avisa um evento sem enviar dados, e 'seen map[string]struct{}' é um set sem desperdício de memória.

Em código

seen := map[string]struct{}{}
seen["a"] = struct{}{}
_, ok := seen["a"]
done := make(chan struct{})
close(done)
fmt.Println(ok, len(seen))

Exemplos

Usa struct vazia como valor do map, a gente só quer saber se a chave existe.

O canal done carrega struct vazia porque só importa o sinal.

Cuidado

Não confunda o tipo struct{} com o valor struct{}{}: o primeiro é o tipo, o segundo é o literal vazio.

Sinônimos

struct{}

Veja também

Todos os termos de Go