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。你需要先初始化地图,然后才能使用它。这就是解决方案!感谢您的发帖,我仍在学习围棋和指针: