golang的channel介紹
功能:
channel 是 Goroutine 之間的通訊機制,用於傳遞數據。
可以是無緩衝或有緩衝的。
宣告與初始化:
ch := make(chan int) // 無緩衝 channel
chBuffered := make(chan int, 5) // 有緩衝 channel,大小為 5
基本操作:
import (
"fmt"
"time"
)
func main() {
ch := make(chan int)
// Goroutine
go func() {
fmt.Println("Sending data...")
ch <- 42 // 傳送數據到 channel
}()
fmt.Println("Receiving data...")
val := <-ch // 從 channel 接收數據
fmt.Println("Received:", val)
}
緩衝 channel 範例:
func main() {
ch := make(chan int, 2)
// 傳送數據
ch <- 1
ch <- 2
// 接收數據
fmt.Println(<-ch)
fmt.Println(<-ch)
}
留言
張貼留言