gpt4 book ai didi

go - 如何执行作为其他结构字段的结构的方法

转载 作者:IT王子 更新时间:2023-10-29 02:30:50 25 4
gpt4 key购买 nike

我创建了这样的 2 个结构:

type HostsFile struct {
path string
masters string
nodes string
}

type AnsInstance struct {
name string
url string
yamlPath string
user string
pass string
branch string
hostsFile *HostsFile
}

HostsFile 结构有这样的方法:

func (p *HostsFile) SetMasters(masters string) {
p.masters = masters
}

func (p *HostsFile) SetNodes(nodes string) {
p.nodes = nodes
}

AnsInstance 有这样一个,它使用HostFile 结构中的方法:

func (p *AnsInstance) PrepInstExec(masters string, nodes string) {
p.hostsFile.SetMasters(masters)
p.hostsFile.SetNodes(nodes)
p.hostsFile.GenerateHostsFile()
}

当我以这种方式执行 PrepInstExec 时:

ansInstance.PrepInstExec("lalala,fafafaf", "bakuka,matata")

我收到错误:

panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x18 pc=0x4ccba3]

goroutine 1 [running]:
card-installer/ansexec.(*HostsFile).SetMasters(...)
/home/holo/go/src/card-installer/ansexec/ansexec.go:19
card-installer/ansexec.(*AnsInstance).PrepInstExec(0xc0000c5e90, 0x6d1a2c, 0xe, 0x6d15b9, 0xd)
/home/holo/go/src/card-installer/ansexec/ansexec.go:145 +0x53
main.main()
/home/holo/go/src/card-installer/main.go:101 +0x84e
exit status 2

我做错了什么?是否可以执行嵌入到其他结构的一个结构的方法?

编辑:

我正在以这种方式创建新的 AnsInstance:

func NewAnsInstance(name string, url string, path string) *AnsInstance {
p := new(AnsInstance)
p.name = name
p.url = url
p.yamlPath = path
p.branch = "master"
return p
}

最佳答案

也许 hostsFile' 为 nil??

func main() {
ansInstance := NewAnsInstance("name", "url", "path")

// add code and check hostsFile
fmt.Printf("%+v\n", ansInstance)
}

关于go - 如何执行作为其他结构字段的结构的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55342100/

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