doupiai5597 2018-05-09 09:32
浏览 42
已采纳

golang创建多级字符串映射

I am very new to Go language. I am struggling with following usecase.

I want to store session id (string) and reqeust No (string) in a map for duplicate checking. When there is no entry in the map, it should create one, else it should return a flag saying the entry already exists.

package main

import "fmt"

func main() {
    mySessionData := make(map[string]map[string]bool)

    var ret bool
    ret = chkDuplicate(mySessionData, "session1", "1")
    fmt.Println(mySessionData)
    ret = chkDuplicate(mySessionData, "session1", "2")
    fmt.Println(mySessionData)
    ret = chkDuplicate(mySessionData, "session1", "3")
    fmt.Println(mySessionData)
    ret = chkDuplicate(mySessionData, "session1", "2")
    fmt.Println(mySessionData)
    ret = chkDuplicate(mySessionData, "session1", "4")
    fmt.Println(mySessionData)
    fmt.Println(ret)

    delete(mySessionData, "session1")
    fmt.Println(mySessionData)

}

func chkDuplicate(m map[string]map[string]bool, sess string, Reqno string) bool {
    var found bool
    val, found := m[sess][Reqno]
    if !found {
        fmt.Println(val)
        valu := make(map[string]bool)
        valu[Reqno] = true
        m[sess] = valu
        return !found

    }
    return !found
}

The problem I am facing is that the value is over written every time the function is called. What am I doing wrong here?

  • 写回答

3条回答 默认 最新

  • douliao5942 2018-05-09 22:37
    关注

    It's often simpler to use a struct key instead of a multi-level map: https://play.golang.org/p/WFlGi1rrVOm

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 求chat4.0解答一道线性规划题,用lingo编程运行,第一问要求写出数学模型和lingo语言编程模型,第二问第三问解答就行,我的ddl要到了谁来求了
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥15 maple软件,用solve求反函数出现rootof,怎么办?
  • ¥65 汇编语言除法溢出问题
  • ¥15 Visual Studio问题
  • ¥20 求一个html代码,有偿
  • ¥100 关于使用MATLAB中copularnd函数的问题
  • ¥20 在虚拟机的pycharm上
  • ¥15 jupyterthemes 设置完毕后没有效果