迹忆客 计算机编程题库

题库 > Go > Go 笔试题精选 练习:45

Go 笔试题精选

下面代码运行时输出的结果是什么? ```go package main import ( "fmt" "time" ) func main() { ch1 := make(chan int) go func(){ fmt.Println(<-ch1) }() ch1 <- 5 time.Sleep(1 * time.Second) } ```
  • 5
  • 编译不通过
  • 运行时死锁
正确答案是:A
正确率:20%

解析:

在上一道题目中我们了解 go 语句后面的函数调用,其参数会先求值,这和普通的函数调用求值一样。

而本题中 fmt.Println(<-ch1) 是在 go 协程中 。因此 <-ch1 会在主协程中给通道写入值之后读取的。

因此本题答案为A,输出 5。

查看笔记

扫码一下
查看教程更方便