gpt4 book ai didi

go - Go中应该如何设置单例状态? (或者,为什么这不起作用?)

转载 作者:数据小太阳 更新时间:2023-10-29 03:36:06 25 4
gpt4 key购买 nike

<分区>

除了关于是否应该使用单例的任何讨论(是的,我知道,反模式,我已经选择不使用它),我很困惑为什么这不起作用。我尝试在单例实例中设置状态,但我的方法实际上并未修改主实例。

保留的是我在实例化单例时传递的任何初始化。

起初我以为这是一个嵌套的结构问题,因为我从 foo 中的 bar 开始,但后来发现它对原始 val

在偶然的情况下,我在 Mac OS Mojave 上运行 Go 1.12.7。

package main

import (
"fmt"
"sync"
)

type foo struct {
val int
state bar
}

type bar struct {
inner int
}

var singleton *foo
var once sync.Once

func GetFoo() *foo {
once.Do(func() {
singleton = &foo{
state: bar{inner: 0},
}
})
return singleton
}

func (f foo) SetState() {
f.val = 1
f.state.inner = 1
}

func main() {

f := GetFoo()
fmt.Println(f)
f.SetState()
fmt.Println(f)

}

我希望这个输出:

&{0 {0}}
&{1 {1}}

相反,我得到:

&{0 {0}}
&{0 {0}}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com