gpt4 book ai didi

go - Golang 方法中 nil 接收器的行为

转载 作者:行者123 更新时间:2023-12-05 01:06:18 25 4
gpt4 key购买 nike

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 == nil 在方法 M() 中是 true

最佳答案

第一种情况,i==nil为假,因为i是一个类型为T的接口(interface),其值为。要使接口(interface)等于字面值 nil,它必须同时具有类型和值 nil。这里,i 具有非 nil 类型。

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

关于go - Golang 方法中 nil 接收器的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69384852/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com