返回介绍

第五十三天

发布于 2023-06-25 22:22:03 字数 1808 浏览 0 评论 0 收藏 0

1.关于 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)
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文