golang channel面试

某次面试面试官问了个很好的问题,可惜自己当时不了解,下面仔细分情况试一下。抽空看下golang里关于channel是如何实现的

问题: 向一个关闭的channel里,读数据,写数据,分别会发生什么?

1. 向一个关闭的channel里,写数据。

无论是否带缓存的channel,都会引发错误

panic: send on closed channel

goroutine 1 [running]:
main.main()
    detail info
exit status 2

2. 向一个关闭的channel里,读数据。

1. 带缓存的channel

缓存里还有数据
返回 数据, true

缓存里没有数据
返回 数据类型未初始化零值, false

2. 不带缓存的channel

缓存里没有数据
返回 数据类型未初始化零值, false

缓存里有数据
执行不到 从缓存里读数据就报错。因为数据没人读就阻塞在哪里了

你可能感兴趣的:(golang channel面试)