有个问题一直不解,发个帖解惑下

RingoBool · 2018-11-29 11:46:08 · 729 次点击

应该是程序跑太快了,结束了主goroutine,还没来得输出3

package main

import (
    "fmt"
    "time"
)

func main() {
    intChan := make(chan int)
    flag := true

    go func() {
        for i := 0; i < 3; i++ {
            fmt.Println("i的值:", i)
            intChan <- i // 发送信号量
            fmt.Println(i)
            if i == 2 {
                flag = false
            }
        }
    }()

    time.Sleep(time.Second * 2)
    <- intChan // 移除信号量
    <- intChan
    <- intChan
    for flag{
        fmt.Println("go")
    }
}

执行我这段代码,就可以发现问题了。

#1
更多评论

错了,是没来得及输出2

#2

嗯 理解了 刚sleep下 就出来了

#3