> 文章列表 > 2道关于chan的面试题

2道关于chan的面试题

2道关于chan的面试题

题目一:

下面关于通道描述正确的是:

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 <- 1ch <- 2fmt.Println(len(ch))   //2fmt.Println(cap(ch))   //10
}

解答:解答:内置函数len()和cap()分别用于获取chan的数据个数和缓冲区大小

更多知识学习加入知识星球:
1、ChatGPT 基础用法、使用教程

2、交流共享 ChatGPT 的各种信息,资源互换,答疑关于 ChatGPT 的问题。

3、分享如何利用 ChatGPT 提升工作效率,分享变现机会。

4、go编程相关知识

5、工作中开发经验分享
在这里插入图片描述