登录
首页 >  Golang >  Go问答

将结构体指针存储在本地

来源:stackoverflow

时间:2024-02-22 21:30:13 253浏览 收藏

一分耕耘,一分收获!既然打开了这篇文章《将结构体指针存储在本地》,就坚持看下去吧!文中内容包含等等知识点...希望你能在阅读本文后,能真真实实学到知识或者帮你解决心中的疑惑,也欢迎大佬或者新人朋友们多留言评论,多给建议!谢谢!

问题内容

这个程序为什么打印 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
}

到这里,我们也就讲完了《将结构体指针存储在本地》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>