【发布时间】:2020-09-28 07:52:26
【问题描述】:
我正在尝试使用这样的循环构建 []map[string]interface{}:
package main
import (
"encoding/json"
"fmt"
)
type People []struct {
Name string `json:"name"`
Age int `json:"age"`
}
func main() {
resp := `[{"name":"Test","age":15}, {"name":"Test2","age":25}]`
data := &People{}
_ = json.Unmarshal([]byte(resp), data)
m := make([]map[string]interface{}, len(*data))
for k, v := range *data {
m[k]["Name"] = v.Name
m[k]["Age"] = v.Age
}
fmt.Println(m)
fmt.Printf("%T", m)
}
但我总是收到这个错误:
恐慌:分配给 nil 映射中的条目
goroutine 1 [运行]: main.main() /tmp/sandbox300360207/prog.go:19 +0x17a
我不能使用 m := make(People, len(*data)) 和 m[k].Name = v.Name,因为我需要类型为 []map[string]interface{} 而不是 main.People
我也试过这个:
func main() {
resp := `[{"name":"Test","age":15}, {"name":"Test2","age":25}]`
data := &People{}
_ = json.Unmarshal([]byte(resp), data)
m := make([]map[string]interface{}, len(*data))
for k, v := range *data {
m[k] = map[string]interface{"Name": v.Name, "Age": v.Age}
}
fmt.Println(m)
fmt.Printf("%T", m)
}
但是得到了这个错误:
./prog.go:19:31:语法错误:意外的文字“名称”,期待 方法或接口名称
【问题讨论】:
标签: arrays dictionary for-loop go slice