struct{} là struct không có field nào → chiếm 0 byte. Mọi giá trị struct{}{} share cùng một địa chỉ, nên dùng nó ở đâu chỉ cần "sự hiện diện" chứ không cần dữ liệu.
Ba chỗ thường gặp:
- Set: map[string]struct{} — tiết kiệm hơn map[string]bool vì value không tốn byte.
- Signal channel: chan struct{} — báo hiệu bằng close/gửi, không mang payload.
- Method-only type / marker — receiver không cần state.
go
set := map[string]struct{}{}
set["a"] = struct{}{}
_, ok := set["a"] // ok == true
done := make(chan struct{})
close(done) // báo hiệu, không kèm dữ liệu