2 回答

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
解決方案是使用 getter 函數(shù)。
我們將所有非指針字段隔離在一個(gè)名為barPublicinstance 的結(jié)構(gòu)中。該函數(shù)getByID將返回此結(jié)構(gòu)的副本。為了從 的映射中訪(fǎng)問(wèn)值bar,我們使用專(zhuān)門(mén)的 getter 函數(shù)getByIDAndKey。
// struct containing non pointer fields of bar
type barPublic struct {
x string
}
type bar struct {
barPublic
largeMap map[int]int
}
var cache map[int]bar
func getByID(id int) (barPublic, bool) {
v, ok := cache[id]
if !ok {
return barPublic{}, false
}
return v.barPublic, true
}
func getByIDAndKey(id, key int) int {
v, ok := cache[id]
if !ok {
return 0, false
}
w, ok := v.largeMap[key]
if !ok {
return 0, false
}
return w, true
}
- 2 回答
- 0 關(guān)注
- 141 瀏覽
添加回答
舉報(bào)