在Go中,如果我定义了一个以指针作为接收器的函数,那么它不应该只允许从指针调用该函数吗?为什么可以从值本身调用此函数并产生相同的效果。
例如,在以下程序中:m1.reset()和m2.reset()具有相同的效果。即使m1是一个值,而m2是一个指针。
我有点困惑,因为有两种方法可以做同一件事,而且不确定要遵循哪种方法。尽管大多数代码遵循使用指针字段调用函数的约定。我想念什么吗?
package main
import "fmt"
type MyStruct struct {
X int
}
func (m *MyStruct) reset() {
m.X = 0
}
func main() {
m1 := MyStruct{1}
m2 := &MyStruct{1}
fmt.Println(m1.X)
fmt.Println(m2.X)
m1.reset()
m2.reset()
fmt.Println(m1.X)
fmt.Println(m2.X)
}
慕姐4208626
一只萌萌小番薯
婷婷同学_
相关分类