Class 为Golang结构字段指定一个新值

Class 为Golang结构字段指定一个新值,class,variables,methods,go,scope,Class,Variables,Methods,Go,Scope,我对结构字段有问题 我用一种方法创建了一个类点,该方法通过dx增加或减少对象变量x。另一种方法Print用于输出结果 在main()中,使用默认值x=3和dx=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 我的代码怎么了 类型点结构{ x、 dx int } fun

我对结构字段有问题

我用一种方法创建了一个类
,该方法通过
dx
增加或减少对象变量
x
。另一种方法
Print
用于输出结果

main()
中,使用默认值
x=3
dx=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
我的代码怎么了

类型点结构{
x、 dx int
}
func(s点)移动(){
s、 x+=s.dx
log.Printf(“新X=%d”,s.X)
}
func(s点)打印(){
log.Printf(“最终X=%d”,s.X)
}
func main(){
st:=点{3,2};
圣莫夫
圣普林特
}

您需要在此处使用指针,否则每次仅更改原始对象的副本。一切都在进行中


您需要在此处使用指针,否则每次仅更改原始对象的一个副本。一切都在进行中


这就是指针接收器和值接收器之间的区别


这就是指针接收器和值接收器之间的区别


就这样!我习惯于ABAP太多,对变量的引用默认情况下会传递到函数中。谢谢你的快速回答!就这样!我习惯于ABAP太多,对变量的引用默认情况下会传递到函数中。谢谢你的快速回答!
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()
}