一尘不染

使用地图参考访问地图

go

我尝试遍历一个映射,将其作为指向函数的指针传递,但是我找不到访问元素的方法。这是代码:

func refreshSession(sessions *map[string]Session) {
    now := time.Now()
    for sid := range *sessions {
        if now.After(*sessions[sid].timestamp.Add(sessionRefresh)) {
            delete( *sessions, sid )
        }
    }
}

此示例中的第4行返回以下编译错误:

./controller.go:120: invalid operation: sessions[sid] (type *map[string]Session does not support indexing)

我尝试了方括号,但没有效果。如果我带走所有引用运算符(*&),则可以正常编译。

我该怎么写?


阅读 231

收藏
2020-07-02

共1个答案

一尘不染

您不需要在地图上使用指针。

映射类型是引用类型,例如指针或切片

如果需要更改,Session可以使用一个指针:

map[string]*Session

2020-07-02