我正在尝试了解 Go 中的频道。这是一个代码示例:
package main
import "fmt"
func main() {
m := make(map[int]string)
m[2] = "First Value"
c := make(chan bool)
go func() {
m[2] = "Second Value"
c <- true
}()
fmt.Printf("1-%s\n", m[2])
fmt.Printf("2-%s\n", m[2])
_ = <-c
fmt.Printf("3-%s\n", m[2])
fmt.Printf("4-%s\n", m[2])
}
有时上述代码的输出是(结果 1):
1-First Value
2-First Value
3-Second Value
4-Second Value
但有时我得到(结果 2):
1-First Value
2-Second Value
3-Second Value
4-Second Value
更改c := make(chan bool)为 后c := make(chan bool, 1),出现同样的情况:有时结果 1,有时结果 2。
为什么?
心有法竹
慕慕森
相关分类