从字符串值更新map [string] int

时间:2019-06-27 20:28:19

标签: go

我正在尝试解析一个类似json的字符串,

"abc:9, bar:3"

我最后想要的是一个map[string]int,它看起来像这样:

map[string]int{"abc":9, "bar":3}

我已经将它分成一组“对”,就像这样:

`[“ abc:9”,“ bar:3”]

我正在努力使该结构进入最终的map[string]int。我已经尝试过在整个切片上进行测距,但是我却错过了如何将其真正放入地图中。

        val := "abc:9, bar:3"
        lsd := make(map[string]int)
        c := strings.Split(val, ",")
        for k, v := range c {
            lsd = v[k] // where I am struggling, I know this is wrong, but I can't seem to find the proper syntax and tools for this
        }

有人可以指出正确的方向,以结束我在这里寻找的map [string] int吗?

1 个答案:

答案 0 :(得分:2)

这有点俗气,但是我在制作fmt.Sscanf时遇到了麻烦,所以我只是再次分裂。而且您可能已经错过了strconv-strconv.Atoi是个快速转换器。

package main

import (
    "fmt"
    "strconv"
    "strings"
)

func main() {
    lsd := make(map[string]int)
    toParse := "abc:5, foo:5"
    parts := strings.Split(toParse, ", ")
    for _, p := range parts {

        results := strings.SplitN(p, ":", 2)
        val, err := strconv.Atoi(results[1])
        if err != nil {
            panic(err)  //probably want to do somethig better
        }
        lsd[results[0]] = val
    }

    fmt.Printf("%#v", lsd)
}
  

map [string] int {“ abc”:5,“ foo”:5}

https://play.golang.org/p/UadibEzTXWU