题目一:
下面关于通道描述正确的是:
1.读nil chan会触发panic
2.写nil chan会触发panic
3.读关闭的chan会触发panic
4.写关闭的chan会触发panic
解答:这个提涉及到2个知识点,操作nil的chan会怎么样,操作关闭的chan会怎么样,下面我们分别在看下:
操作nil的chan : 对于nil chan不管是读还是写都不会触发panic, 而是阻塞。
操作关闭的chan: 关闭后的chan仍然是可以读的,利用这个特性我们经常会看到如下代码:
在协程里判断done来判断是否退出协程,在另外一个协程实际不会写入数据到done,而是直接close(done)
所以只有对关闭的chan进行写操作会触发panic ,答案选4
题目2:
下面函数输出什么:
func ChanCap() {
ch := make(chan int,10)
ch <- 1
ch <- 2
fmt.Println(len(ch)) //2
fmt.Println(cap(ch)) //10
}
解答:解答:内置函数len()和cap()分别用于获取chan的数据个数和缓冲区大小
更多知识学习加入知识星球:
1、ChatGPT 基础用法、使用教程
2、交流共享 ChatGPT 的各种信息,资源互换,答疑关于 ChatGPT 的问题。
3、分享如何利用 ChatGPT 提升工作效率,分享变现机会。
4、go编程相关知识
5、工作中开发经验分享