go中增加struct变量

时间:2013-05-17 13:55:55

标签: go

我期待看到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())
}

http://play.golang.org/p/r3csfrD53A

1 个答案:

答案 0 :(得分:23)

您的方法接收器是一个结构值,这意味着接收器在调用时获取结构的副本,因此它会增加副本并且不会更新原始文件。

要查看更新,请将方法放在结构指针上。

func (self *Counter) increment() {
    self.count++
}

现在self是指向counter变量的指针,因此它会更新其值。


http://play.golang.org/p/h5dJ3e5YBC