golang面试-day53

关于 channel 下面描述正确的是?
  • A. 向已关闭的通道发送数据会引发 panic;

  • B. 从已关闭的缓冲通道接收数据,返回已缓冲数据或者零值;

  • C. 无论接收还是接收,nil 通道都会阻塞;

参考答案及解析:ABC。

2.下面的代码有几处问题?请详细说明。
type T struct {
    n int
}

func (t *T) Set(n int) {
    t.n = n
}
func getT() T {
    return T{}
}

func main() {
    getT().Set(1)
}

参考答案及解析:有两处问题:

  • 1.直接返回的 T{} 不可寻址;

  • 2.不可寻址的结构体不能调用带结构体指针接收者的方法;

修复代码:

type T struct {
     n int
}

func (t *T) Set(n int) {
     t.n = n
}

func getT() T {
    return T{}
}

func main() {
    t := getT()
    t.Set(2)
    fmt.Println(t.n)
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值