Golang-channel02(关闭,遍历)

    科技2025-08-12  6

    关闭

    使用channel内置函数Close(),只能读,不能写,代码如下:

    package main import ( "fmt" ) func main(){ intChan := make(chan int, 3) intChan <- 100 intChan <- 200 close(intChan) //intChan <- 300 //通道已被关闭无法再写入 x , ok := <-intChan //但是还是可以继续读 fmt.Println(x, ok) }

    遍历

    channel不推荐用for循环,因为长度会变化。用for-range的方式,注意: 1)在遍历时,如果channel没有关闭,则会出现deadlock的错误 2)如果channel已经关闭,遍历完后,就会退出遍历

    //遍历 intChan2 :=make(chan int, 100) for i:=0; i<100; i++{ intChan2 <- (i+10) } close(intChan2) //注意 //这边for range只返回一个值 for v := range intChan2{ //如果这边的intChan2没有关闭 //取完了for还一值等,造成死锁 fmt.Println("v= ", v) }
    Processed: 0.008, SQL: 8