空结构
结构是一系列命名元素,称为字段,每个元素都有一个名称和一个类型。空结构没有字段,就像这个匿名的空结构:
var s struct{}
或者像这个命名的空结构类型:
type T struct{}
关于空结构的有趣之处在于,它的大小为零(尝试 The Go Playground ):
fmt.Println(unsafe.Sizeof(s))
这打印 0
,因此空结构本身不占用内存。所以它是退出频道的好选择,比如(试试 The Go Playground ):
package main
import (
"fmt"
"time"
)
func main() {
done := make(chan struct{})
go func() {
time.Sleep(1 * time.Second)
close(done)
}()
fmt.Println("Wait...")
<-done
fmt.Println("done.")
}