package main import ( "fmt" "time" ) func main() { ch := make(chan int, 3) // 容量为 3 的有缓冲 channel fmt.Println("[Main] 开始发送 3 个元素...") ch <- 1 fmt.Println("[Main] 已发送 1") ch <- 2 fmt.Println("[Main] 已发送 2") ch <- 3 fmt.Println("[Main] 已发送 3 (已满)") // 再发送一个会怎样? go func() { fmt.Println("[Sender] 尝试发送第 4 个元素(会阻塞,直到有接收者)...") ch <- 4 fmt.Println("[Sender] 第 4 个元素发送成功") }() time.Sleep(1 * time.Second) fmt.Println("[Main] 开始接收...") for i := 0; i < 4; i++ { v := <-ch fmt.Println("[Main] 收到:", v) } fmt.Println("[Main] 程序结束") }