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 <- 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、工作中开发经验分享
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值