Go · Intermediário · Português · Técnico
struct vazia
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{}