Files
learn-golang/go-channel-practice/buffered.go
2025-12-26 17:56:02 +08:00

36 lines
698 B
Go

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] 程序结束")
}