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