尝试使用结构

时间:2018-04-23 17:42:58

标签: go struct

我正在尝试保留结构的统计信息。我想要做的是使用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

2 个答案:

答案 0 :(得分:0)

当您运行没有指针的方法时,您可以复制struct数据,当使用poiner时,您可以更改原始数据。

答案 1 :(得分:0)

func (g Golang) increaseCounter()更改为func (g *Golang) increaseCounter()。您需要指针接收器来更改结构内的数据。