我正在尝试解析一个类似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吗?
答案 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}