有c/c++学习经历的会发现go的struct语法和c/c++很类型,但是golang的struct{}很有意思。
做set,map[string]struct{}
由于struct{}是空,不关心内容,这样map便改造为setchan struct{}
可以做退出
func worker(i int, ch chan Work, quit chan struct{}) {
for {
select {
case w := <-ch:
// do something
case <-quit:
fmt.Println("worker", i, "quitting")
quit = nil
}
}
}
- 两个structt{}{}地址相等
func main() {
a := struct{}{}
b := struct{}{}
fmt.Printf("%p %p\n", &a, &b)
}
0x1156c08 0x1156c08