gpt4 book ai didi

pointers - 保存以构造本地指针

转载 作者:行者123 更新时间:2023-12-01 22:45:23 24 4
gpt4 key购买 nike

这个程序怎么会打印nil而不是 hello ?如何解决这种情况并成功将该指针存储在结构中? Go 不应该能够弄清楚何时在函数范围之外使用本地指针吗?

package main

import (
"fmt"
)

type test struct {
name *string
}

func (t test) test() {
h := "hello"
t.name = &h
return
}

func main() {
a := test{nil}
a.test()
fmt.Println(a.name)
}

最佳答案

您的测试函数有一个值接收器。所以test将应用于 a 的副本.如果你想用一个方法改变一个结构,你应该写一个有指针接收器的方法。在调用该方法时,go 会自动使用该方法的引用

func (t *test) test() {
h := "hello"
t.name = &h
}

关于pointers - 保存以构造本地指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62697638/

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