小编Mia*_*Yao的帖子

Go 接口比较令人困惑

为什么全局变量a1不等于局部变量a2,而a2等于a3和a4

我很困惑,a1,a2,a3都是通过调用getInterface方法计算的,但是比较它们时,却得到了不同的结果。

谢谢大家看到这个问题。


import "fmt"

var a1 aInterface = getInterface()

type aInterface interface {
    fun1()
}

type aInterfaceImpl struct{}

func (p *aInterfaceImpl) fun1() {
    return
}

func getInterface() aInterface {
    return new(aInterfaceImpl)
}

func main() {
    var a2 aInterface = getInterface()
    var a3 aInterface = getInterface()
    var a4 aInterface = new(aInterfaceImpl)
    fmt.Printf("a1 == a2, %+v\n", a1 == a2) // a1 == a2, false
    fmt.Printf("a2 == a3, %+v\n", a2 == a3) // a2 == a3, true
    fmt.Printf("a2 == a4, %+v\n", a2 …
Run Code Online (Sandbox Code Playgroud)

syntax go

1
推荐指数
1
解决办法
60
查看次数

标签 统计

go ×1

syntax ×1