分析该缓冲通道wrote和read的数字的顺序package mainimport ( “fmt” “time”)func write(ch chan int) { for i := 0; i < 5; i++ { ch <- i fmt.Println(“successfully wrote”, i, “to ch”) } close(ch)}func main() { ch := make(chan int, 2) go write(ch) time.Sleep(2 * time.Second) for v := range ch { fmt.Println(“read value”, v, “from ch”) time.Sleep(2 * time.Second) }}在main中声明的ch的缓冲容量为2,根据缓冲通道的特点,当通道写满的时候写入方法write就会进入阻塞,range方法会读取通道ch中的值,由于存在2s的sleep,最终结果为wrote 0 1 2 3 4read 0 1 2 3 4tips:不同的sleep时长会有不同的返回顺序