为Golang结构字段分配一个新值

Nik*_*Kim 0 variables methods scope class go

我对结构字段有疑问。

我已经创建了一个类Point与一种方法Move()即增加或减少对象变量x通过dx。另一种方法Print用于输出结果。

main()一个新的实例与默认创建x = 3dx = 2,然后我打电话Move()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
Run Code Online (Sandbox Code Playgroud)

我的代码有什么问题?

2014/07/28 15:49:44 New X=5
2014/07/28 15:49:44 Final X=3
Run Code Online (Sandbox Code Playgroud)

che*_*eng 5

您需要在此处使用指针,否则每次都仅更改原始对象的副本。一切都通过价值传递

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()
}
Run Code Online (Sandbox Code Playgroud)