Nik*_*Kim 0 variables methods scope class go
我对结构字段有疑问。
我已经创建了一个类Point与一种方法Move()即增加或减少对象变量x通过dx。另一种方法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
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)
您需要在此处使用指针,否则每次都仅更改原始对象的副本。一切都通过价值传递。
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)