2 回答
TA贡献1827条经验 获得超7个赞
您正在尝试解组切片类型 [] 字符串,而文件内的数据是映射类型 map [字符串] 字符串。
切片类型为:["1", "2", "3"],映射类型为:{"name": "Andrew", "age": 33"}。
请阅读有关slices和maps的信息。
func FilePathWalkDir(root string) ([]string, error) {
var files []string
err := filepath.Walk(root, func(path string, info os.FileInfo, err error) error {
if !info.IsDir() {
files = append(files, path)
}
return nil
})
return files, err
}
// var s []string !
var s map[string]string
func main() {
files, err := FilePathWalkDir("D:/Go/Go_project/Go_pro/files")
if err != nil {
panic(err)
}
for _, file := range files {
jsonFile, err := os.Open(file)
if err != nil {
// ???
log.Println("Error:", err)
}
defer jsonFile.Close()
byteValue, _ := ioutil.ReadAll(jsonFile)
if err := json.Unmarshal([]byte(byteValue), &s); err != nil {
// always check errors
panic(err)
}
log.Printf("Unmarshaled: %v", s)
}
}
TA贡献1790条经验 获得超9个赞
如果要将map[string]字符串转换为[]字符串,可以使用下面的方法
var strs []string
strs = append(s[key],strs)
...
但是这种方法会让你失去地图的钥匙。为什么使用 []string 而不是 map。
- 2 回答
- 0 关注
- 150 浏览
添加回答
举报