登录
首页 >  Golang >  Go问答

为 Golang 结构字段分配新值

来源:Golang技术栈

时间:2023-04-16 21:01:58 434浏览 收藏

学习Golang要努力,但是不要急!今天的这篇文章《为 Golang 结构字段分配新值》将会介绍到golang等等知识点,如果你想深入学习Golang,可以关注我!我会持续更新相关文章的,希望对大家都能有所帮助!

问题内容

我对结构字段有疑问。

Point用一种方法创建了一个类,该方法Move()将对象变量增加或x减少dx. 另一种方法Print用于输出结果。

main()一个新实例中使用默认创建x = 3and dx = 2,然后我调用Move()and Print()。我希望 的值x在期间发生变化Move()并将Print()产生Final x=5,但它不会显示:

2014/07/28 15:49:44 New X=5
2014/07/28 15:49:44 Final X=3

我的代码有什么问题?

type Point struct {
  x, dx int
}

func (s Point) Move() {
  s.x += s.dx
  log.Printf("New X=%d", s.x)
}

func (s Point) Print() {
  log.Printf("Final X=%d", s.x)
}

func main() {
  st := Point{ 3, 2 };
  st.Move()
  st.Print()
}

正确答案

您需要在此处使用指针,否则每次只更改原始对象的副本。在 go 中,一切都是按值传递的。

type Point struct {
  x, dx int
}

func (s *Point) Move() {
  s.x += s.dx
  log.Printf("New X=%d", s.x)
}

func (s *Point) Print() {
  log.Printf("Final X=%d", s.x)
}

func main() {
  st := Point{ 3, 2 };
  st.Move()
  st.Print()
}

好了,本文到此结束,带大家了解了《为 Golang 结构字段分配新值》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

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