Я хочу создать кеш с картой.Поскольку map не позволяет ссылаться на его значение, поэтому невозможно изменить значения в вызываемых функциях.
После некоторого поиска я обнаружил, что это возможно с созданием карты указателя (структуры).Это почти решает проблему и может работать как переменная по ссылке. Но, как я обнаружил, некоторые используют этот метод для карты.Я беспокоюсь об использовании этого, чтобы быть безопасным.У кого-нибудь есть опыт использования карты указателя?и правильно ли это использовать?
package main
import "fmt"
type Cache struct {
name string
counter int
}
func incr(c Cache) {
c.counter += 1
}
func incrp(c *Cache) {
c.counter += 2
}
func main() {
m := make(map[string]Cache)
m["james"] = Cache{name: "James", counter: 10}
c := m["james"]
incr(c)
fmt.Println(c.name, c.counter) // James 10
mp := make(map[string]*Cache)
mp["james"] = &Cache{name: "James", counter: 10}
cp := mp["james"]
incrp(cp)
fmt.Println(cp.name, cp.counter) // James 12
}
отредактировано: в моем тексте были некоторые запутанные слова и предложения, которые приводили к недоразумению, поэтому я попытался исправить это