gpt4 book ai didi

go - 为什么我得到一个引用接口(interface)的空变量?

转载 作者:数据小太阳 更新时间:2023-10-29 03:30:57 27 4
gpt4 key购买 nike

package main

import (
"fmt"
"net/http"
"sync"
"time"
)

type myInterface interface {
doFunc() bool
}

type myStruct struct {
myValue string
si myInterface
}

func newStrcut(si myInterface ) *myStruct {
return &myStruct {si: si}
}

var myS *myStruct

func main() {

myS = newStrcut(&newStrcut{})
myS.myValue = "test"
if myS.doMyLogic() {
return
}

}

func (s *myStruct) doMyLogic() bool {
fmt.Printf(s.myValue )
s.si.doFunc()
return false
}

func (s *myStruct) doFunc() bool {
fmt.Printf(s.myValue)
return false
}

为什么我在 doFuncdoMyLogic 中为 s.MyValue 获取不同的值?在 doMyLogic 中是 test,在 doFunc 中是 ""

最佳答案

您正在访问两个不同对象的 MyValue 字段。您的代码构造了一个对象 myS,它包含指向第二个对象 myS.si 的指针。

第一个在 MyValue 字段中包含 “test”。另一个,因为它从未被设置,获取字符串的默认值,""

关于go - 为什么我得到一个引用接口(interface)的空变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53143365/

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