登录
首页 >  Golang >  Go问答

Golang 中接收者为 nil 的方法的行为

来源:stackoverflow

时间:2024-02-20 19:09:25 359浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《Golang 中接收者为 nil 的方法的行为》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

package main

import (
    "fmt"
)

type I interface {
    M()
}

type T struct {

}

func (t *T) M() {
    fmt.Println(t == nil)
}

func main() {
    var i I
    var t *T

    i = t

    fmt.Println(i == nil)

    i.M()
}

结果是 falsetrue

这两种情况的值为 nil,类型为 *main.t

我知道在第一种情况下 i == nilfalse 因为变量 i 没有 nil 类型。

我不明白为什么 t == niltrue 在方法 m() 中。


正确答案


在第一种情况下,i==nil 为 false,因为 i 是一个接口,其类型为 T,其值为 nil。对于等于文字值 nil 的接口,它必须同时具有类型和值 nil。这里,i 具有非零类型。

在第二种情况下,接收者就是 nil,因为函数 M 的接收者是 *T 类型的值,其值为 nil

到这里,我们也就讲完了《Golang 中接收者为 nil 的方法的行为》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>