我正在使用goroutine和通道编写一些golang并发代码,这是我的代码:
package main
import "fmt"
func main() {
in := make(chan int)
go func() {
fmt.Println("Adding num to channel")
in <- 1
fmt.Println("Done")
}()
val := <- in
fmt.Println(val)
}
Run Code Online (Sandbox Code Playgroud)
我认为我创建了一个无缓冲的通道,内部通道必须等待,直到外部通道读取它为止,并且输出可能像这样:
Adding num to channel
1
Done
Run Code Online (Sandbox Code Playgroud)
但实际上,输出为:
Adding num to channel
Done
1
Run Code Online (Sandbox Code Playgroud)
我很困惑,为什么内部无缓冲通道只是在不等待读取的情况下运行