两个 goroutine 用 channel 通信,一个 goroutine 顺序发送 0,1,2,3,4 个数字,另一个 goroutine 接收并输出。 考察了 goroutine 的控制、channel 的关闭等基础知识,面试者写的代码各种问题。
上周面试 5 个人只有 1 个人一次写出了执行没问题的代码,有 1 个经过提示也没写出来,剩下的能提示后逐步修改出正确的代码。
这个题还是很经典的,不用问 GMP 、垃圾回收算法等八股文,这个题就能看出 go 基础了。
103
felixfw1111x 5 分钟前
package main
import "fmt" func main() { ch, done := make(chan int), make(chan bool) go func() { for i := 0; i <= 4; i++ { ch <- i } close(ch) }() go func() { for i := range ch { fmt.Print(i, " ") } done <- true }() <-done } |