go - 尝试使用结构在 golang 中实现 OOPS

标签 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

最佳答案

当你运行没有指针的方法时,你复制了结构数据,当你使用指针时,你改变了原始数据。

关于go - 尝试使用结构在 golang 中实现 OOPS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49987028/

相关文章:

go - 当标准输入为管道时如何从设备读取

在动态数组之间移动结构的 C 方法

c - 结构中的枚举

c++ - C++模板错误: ‘=’ token 之前缺少模板参数

go - 在不同的 goroutine 中替换字符串的值时是否需要互斥锁?

templates - 在 golang gin 简单模板示例中,如何呈现不带引号的字符串?

go - 创建 map[string]struct{} 并赋值

iOS,在 Objective C 中使用结构,结构值不可从 super View 分配

c++ - 结构的Printf? (C/C++, VC2008)

unit-testing - 当我删除 fmt.Println() 时,golang 中的猴子修补失败