gpt4 book ai didi

go - Golang是否具有类似python的ast.literal_eval()的功能,可将 map 的字符串表示形式转换为实际的 map 对象?

转载 作者:行者123 更新时间:2023-12-01 22:42:13 24 4
gpt4 key购买 nike

我需要在Go中将 map 对象的字符串表示形式转换为实际的 map 对象。 Python通过ast.literal_eval()并在Go中寻找类似的东西来具有此功能。

我已经检查了Go的ast lib https://golang.org/pkg/go/ast,但是找不到类似的功能。也是第三方lib https://github.com/apaxa-go/eval,它通过自述文件中的示例代码“出现”以支持此操作(尽管并非特定于 map ):

src:="int8(1*(1+2))"
expr,err:=ParseString(src,"")
if err!=nil{
return err
}
r,err:=expr.EvalToInterface(nil)
if err!=nil{
return err
}
fmt.Printf("%v %T", r, r) // "3 int8"

但是在尝试 map 时:
myMap := "map[blah:1 stuff:2 list:3]"
expr, err := eval.ParseString(myMap, "")
if err != nil{
log.Fatal("%v", err)
}
log.Printf("%v %T", expr, expr)
result, err := expr.EvalToInterface(nil)
if err != nil{
log.Fatal("%v", err)
}
log.Printf("%v %T", result, result)

我收到以下错误消息:
2019/10/27 18:38:27.242352 main.go:33: %vexpression:1:9: expected ']', found ':'

其中第33行是表达式:
expr, err := eval.ParseString(myMap, "")

我刚开始使用Go,所以我可能会从错误的方向进行操作。任何帮助,将不胜感激。最终目标是采用 map 的这种字符串表示形式并将其转换为JSON。

最佳答案

myMap中的 map 表示错误。你应该这样写

map[string]int{"foo": 1, "bar": 2}

关于go - Golang是否具有类似python的ast.literal_eval()的功能,可将 map 的字符串表示形式转换为实际的 map 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58585062/

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