Go面试题53

Posted by     "" on Thursday, January 16, 2020

Go面试题53

1: 关于channel下面描述正确的是?

  • A. 向已关闭的通道发送数据会引发panic.
  • B. 从已经关闭的缓冲通道接受数据,返回已缓冲数据或者零值.
  • C. 无论发送还是接受, nil 通道都会阻塞

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: 答案及解析: ABC

2: 答案及解析: 有两处问题:

直接返回的T{}不可寻址;
不可寻址的结构体不能调用带结构体指针接受者的方法;

修复代码:

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)
}

「真诚赞赏,手留余香」

Richie Time

真诚赞赏,手留余香

使用微信扫描二维码完成支付