我正在尝试保留结构的统计信息。我想要做的是使用NewGolang创建一个结构并增加计数器,但所有输出都是1.我期待1,2,3。有人可以解释一下。
package main
import "fmt"
type Golang struct {
SessionCounter int
}
func NewGolang() *Golang {
return &Golang{
SessionCounter: 0,
}
}
func (g Golang) increaseCounter() {
g.SessionCounter++
fmt.Println(g.SessionCounter)
}
func main() {
obj := NewGolang()
obj.increaseCounter()
obj.increaseCounter()
obj.increaseCounter()
}
输出:
1
1
1
预期: 1 2 3
答案 0 :(得分:0)
当您运行没有指针的方法时,您可以复制struct数据,当使用poiner时,您可以更改原始数据。
答案 1 :(得分:0)
将func (g Golang) increaseCounter()
更改为func (g *Golang) increaseCounter()
。您需要指针接收器来更改结构内的数据。