package main import ( "fmt" "time" ) func main() { ch := make(chan string) // 无缓冲 channel go func() { fmt.Println("[Sender] 准备发送数据...") ch <- "hello from goroutine" // 这里会阻塞,直到有人接收 fmt.Println("[Sender] 数据发送完毕") }() time.Sleep(1 * time.Second) fmt.Println("[Main] 1 秒后开始接收数据...") msg := <-ch // 接收数据,同时解除发送方阻塞 fmt.Println("[Main] 收到:", msg) fmt.Println("[Main] 程序结束") }