sturct{}
Размера на struct{} е нула, за това е изключително подходящ тип за употреба в канали, които се използват само за синхронизация.
var s struct{}
fmt.Println(unsafe.Sizeof(s)) // 0
При употребата е нужно да създадете нов обект от struct{}, тоест в канала реално пускаме struct{}{}:
done := make(chan struct{})
go func(){
// do some stuff
done <- struct{}{}
}()
// do some stuff and wait
<- done