struct{}
package main
import (
"fmt"
"log"
"time"
)
//struct {}是一个无元素的结构体类型,通常在没有信息存储时使用。优点是大小为0,不需要内存来存储struct {}类型的值。
//struct {} {}是一个复合字面量,它构造了一个struct {}类型的值,该值也是空。
var ch chan struct{} = make(chan struct{}, 2)
func foo() {
ch <- struct{}{}
log.Println("foo() 000");
ch <- struct{}{}
log.Println("foo() 111");
time.Sleep(5 * time.Second)
log.Println("foo() 222");
close(ch)
log.Println("foo() 333");
}
func main() {
var b struct{}
log.Println("main() 111");
go foo()
log.Println("main() 222");
a := <-ch
log.Println("main() 333", a);
b = <-ch
log.Println("main() 444", b);
c := <-ch
log.Println("main() 555", c);
x, ok := <-ch
fmt.Println(x)
if ok==false{
fmt.Println("ch为空")
}else{
vv:=<-ch
fmt.Printf("%T\n",ch)
fmt.Println("还有值",vv)
}
}