Dictionary 如何指定给嵌套贴图
我有点像Dictionary 如何指定给嵌套贴图,dictionary,go,Dictionary,Go,我有点像 type rateLimit struct { Count int } 还有这样一个函数: func NewRateLimiter(////) *RateLimiter { rateLimits := make(map[string]*rateLimit) return &RateLimiter{ cachePeriod: cachePeriod, rateLimits: rateLimits, }
type rateLimit struct {
Count int
}
还有这样一个函数:
func NewRateLimiter(////) *RateLimiter {
rateLimits := make(map[string]*rateLimit)
return &RateLimiter{
cachePeriod: cachePeriod,
rateLimits: rateLimits,
}
}
setNested(rateLimits, "foo", "bar", a)
此结构允许您创建嵌套结构,如
税率限制[foo]=a
但我正在尝试进行更改,以便它是嵌套的,并且我可以执行rateflimits[foo][bar]=a
我试着把结构改成
rateLimits:=makemap[string]map[string]*rateLimit
及
但是我有点慌乱:分配给nil map中的条目[recovered]慌乱:分配给nil map中的条目rateLimits:=makemap[string]map[string]*rateLimits rateLimits[foo]=makemap[string]*rateLimit 差饷限额[foo][bar]=a rateLimits:=map[string]map[string]*rateLimit{foo:{bar:a}
必须创建嵌套映射:
func setNested(m1 map[string]map[string]string, k1, k2 string, v string) {
m2 := m1[k1]
if m2 == nil {
m2 = make(map[string]string)
m1[k1] = m2
}
m2[k2] = v
}
像这样使用它:
func NewRateLimiter(////) *RateLimiter {
rateLimits := make(map[string]*rateLimit)
return &RateLimiter{
cachePeriod: cachePeriod,
rateLimits: rateLimits,
}
}
setNested(rateLimits, "foo", "bar", a)
赋值给nil映射中的entry的意思是:您试图给映射中的键赋值,但映射为nil。你需要先初始化地图,然后才能使用它。这就是解决方案!感谢您的发帖,我仍在学习围棋和指针: