我期待看到3,发生了什么?
package main
import "fmt"
type Counter struct {
count int
}
func (self Counter) currentValue() int {
return self.count
}
func (self Counter) increment() {
self.count++
}
func main() {
counter := Counter{1}
counter.increment()
counter.increment()
fmt.Printf("current value %d", counter.currentValue())
}
答案 0 :(得分:23)
您的方法接收器是一个结构值,这意味着接收器在调用时获取结构的副本,因此它会增加副本并且不会更新原始文件。
要查看更新,请将方法放在结构指针上。
func (self *Counter) increment() {
self.count++
}
现在self
是指向counter
变量的指针,因此它会更新其值。