为什么这个基本的例行程序返回true?

时间:2019-07-11 16:45:08

标签: go channel

我是Go的新手,我试图理解为什么此代码返回:

12
true

这里有个简单的程序:

package main

import "fmt"

func foo(c chan int, myValue int) {
    c <- myValue * 2
}

func main() {
    c := make(chan int)
    go foo(c, 3)
    go foo(c, 6)

    v1, v2 := <-c

    fmt.Println(v1)
    fmt.Println(v2)
}

这是真的吗,仅仅是因为它返回了一些随机值吗?

1 个答案:

答案 0 :(得分:4)

在两个值receive中的第二个值是一个布尔值,报告通信是否成功。值v1是从通道接收的值。值v2为真,因为通信成功。