gpt4 book ai didi

go - 将数据添加到map [string] interface {}

转载 作者:数据小太阳 更新时间:2023-10-29 03:41:04 25 4
gpt4 key购买 nike

我有以下代码:

package main

import (
"sync"
"fmt"
)

var dataSet = struct {
sync.RWMutex
data map[string]interface{}
}{data: make(map[string]interface{})}

func main() {
dataSet.Lock()
defer dataSet.Unlock()
d := dataSet.data

test := []string{"one", "two", "three"}
m := map[string]int{
"one": 1,
"two": 2,
"three": 3,
}
for _, t := range test {
d["data"] = map[string]interface{}{
"test" : m["one"],
"more": 1,
t: map[string]int{
"lvl2": 2,
},
}
}
fmt.Println(dataSet.data["data"])
}

这可能吗?
谢谢你的帮助,我更新了上面的代码。
我对Golang还不太熟悉,有些嵌套的地图很混乱。
fmt.Println(dataSet.data["data"])

收益率
map[test:1 more:1 three:map[lvl2:2]]

我怎么才能把这三张地图都画出来?
fmt.Println(dataSet.data["data"].(map[string]interface{})["three"]

收益率
map[lvl2:2]

但是
fmt.Println(dataSet.data["data"].(map[string]interface{})["three"]

收益率
<nil>

如何附加测试中的所有项目?
谢谢大家!
最终解决方案: https://play.golang.org/p/bRZXye649fY
package main

import (
"fmt"
"sync"
)

var dataSet = struct {
sync.RWMutex
data map[string]interface{}
}{data: make(map[string]interface{})}

func main() {
dataSet.Lock()
defer dataSet.Unlock()
d := dataSet.data

test := []string{"one", "two", "three"}
m := map[string]int{
"one": 1,
"two": 2,
"three": 3,
}

for i, t := range test {

dt := map[string]interface{}{
"test": m["one"],
"more": 1,
t: map[string]interface{}{
"i": i,
},
}

// If not set, just use it
if d["data"] == nil {
d["data"] = dt
continue
}

// Otherwise we want to merge new data in
dm := d["data"].(map[string]interface{})
for k, v := range dt {
dm[k] = v
}

}
fmt.Println(dataSet.data["data"].(map[string]interface{})["two"])
fmt.Println(dataSet.data["data"])
}

最佳答案

从您的问题中不清楚您要插入的数据类型(映射值是interface{},可以是任何形式的数据类型),但这里有一个猜测,您可能的目标是什么:

for _, t := range test {
d["data"] = map[string]interface{}{
"test" + t: m["one"],
"more": 1,
"t": map[string]int{
"lvl2": 2,
},
}
}

基本上,在指定复合文字时,需要指定其类型,在多行文字中,每行都需要以逗号结尾。请参见 the tourthe spec

关于go - 将数据添加到map [string] interface {} ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47913014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com