在我的程序中,我有一个缓存来存储一些结构,其他人可以使用该Get方法来获取相应的结构。如果结构包含指针(映射),我如何保护它不被其他人更改?
背景是我的同事和我在同一个包中工作,当他们使用get函数时,我只返回我的结构的副本,但如果结构包含指针,这将不起作用。我知道深拷贝可能是一个解决方案,但如果 struct 包含一些大地图,深拷贝会很痛苦。
示例代码如下:
// a.go
package foo
type bar struct {
largeMap map[int]int
}
var cache map[int]bar
func getById(id int) bar {
return cache[id]
}
// b.go
package foo
func fun() {
p := getById(1)
p.largeMap[2] = 34 // changing the original data in cache!!!!!
}
守候你守候我
RISEBY
相关分类