下面是一个简单的示例,演示如何关闭一个通道:

package main

import "fmt"

func main() { 
    // 创建一个整数类型的通道 
    ch := make(chan int) 

    // 开启一个 goroutine,向通道发送数据 
    go func() { 
        for i := 0; i < 5; i++ { 
            ch <- i 
        } 
        // 关闭通道 
        close(ch) 
    }() 

    // 从通道接收数据,直到通道被关闭 
    for n := range ch { 
        fmt.Println(n) 
    } 
} 

在上面的示例中,我们创建了一个整数类型的通道 ch。然后,我们开启一个 goroutine,向通道发送数据。在发送完 5 个数据后,我们通过 close(ch) 关闭了通道。

接着,我们使用 for n := range ch 的形式从通道接收数据,直到通道被关闭。在每次循环中,我们打印接收到的数据 n

值得注意的是,当通道被关闭后,即使通道中还有未被接收的数据,我们仍然可以通过 for n := range ch 的形式从通道中读取数据。在读取完所有数据后,for n := range ch 会自动退出循环。

Golang 通道关闭示例 - 如何优雅地关闭通道

原文地址: https://www.cveoy.top/t/topic/l5oH 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录