Мне нужно преобразовать строковое представление объекта карты в реальный объект карты в Go. Python имеет эту функцию через ast.literal_eval () и ищет что-то похожее в Go.
Я проверил Ast's lib lib https://golang.org/pkg/go/ast, но я не нахожу подобную функциональность. Также сторонняя библиотека lib https://github.com/apaxa-go/eval, которая "появляется" для поддержки этого с помощью своего примера кода в файле readme (хотя и не относится к картам):
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"
Но при попытке с картой:
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, поэтому я мог быподходить к этому с неправильного направления. Любая помощь будет оценена. Конечная цель - взять это строковое представление карты и преобразовать его в JSON.