在Go語言中,通道(channel)是一種用于在不同Goroutine之間傳遞數據的同步機制。當你不再需要通道時,應該關閉它。關閉通道可以通知接收方不再有數據發送過來。關閉通道的語法是使用內置的close()
函數。
以下是一個簡單的示例,演示了如何關閉通道:
package main
import (
"fmt"
)
func main() {
// 創建一個整數類型的通道
ch := make(chan int)
// 啟動一個Goroutine向通道發送數據
go func() {
for i := 0; i < 5; i++ {
ch <- i
}
// 發送完數據后關閉通道
close(ch)
}()
// 使用for-range循環從通道接收數據,直到通道關閉
for num := range ch {
fmt.Println("Received:", num)
}
fmt.Println("Channel closed")
}
在這個示例中,我們創建了一個整數類型的通道ch
,然后啟動一個Goroutine向通道發送數據。在發送完數據后,我們使用close()
函數關閉通道。在主Goroutine中,我們使用for-range
循環從通道接收數據,直到通道關閉。當通道關閉時,for-range
循環會自動結束。