我有多个 goroutine 试图同时在同一个频道上接收。似乎在通道上开始接收的最后一个 goroutine 获得了值。这是语言规范中的某个地方还是未定义的行为?
c := make(chan string)
for i := 0; i < 5; i++ {
go func(i int) {
<-c
c <- fmt.Sprintf("goroutine %d", i)
}(i)
}
c <- "hi"
fmt.Println(<-c)
输出:
goroutine 4
慕标琳琳
相关分类