2 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
有沒有什么方法可以組織代碼以在第一次遇到時(shí)安全地添加密鑰?
不,您需要適當(dāng)?shù)耐健?/p>

TA貢獻(xiàn)1835條經(jīng)驗(yàn) 獲得超7個(gè)贊
我建議結(jié)合sync.Map
存儲(chǔ)鍵值和sync.Once
值內(nèi)部來執(zhí)行一次性初始化。
這是一個(gè)例子:
type Value struct {
? ? init? ? ? ?sync.Once
? ? someValue? string
}
func (v *Value) Init() {
? ? v.init.Do(func() {
? ? ? ? // This function will only be executed one time
? ? ? ? v.someValue = "initialized"
? ? })
}
func main() {
? ? var m sync.Map
? ? v1, _ := m.LoadOrStore("key", &Value{})
? ? v1.(*Value).Init() // init function is called
? ? v2, _ := m.LoadOrStore("key", &Value{})
? ? v2.(*Value).Init() // init function is not called
}
- 2 回答
- 0 關(guān)注
- 150 瀏覽
添加回答
舉報(bào)