package main
import (
"fmt"
lua "github.com/yuin/gopher-lua"
"strconv"
)
func Str2Int32(s string) int32 {
j, err := strconv.ParseInt(s, 10, 32)
if err == nil {
return int32(j)
}
return 0
}
func LuaParseNumber(parseStr string, keys map[string]lua.LNumber) {
L := lua.NewState()
defer L.Close()
if err := L.DoString(parseStr); err != nil {
fmt.Printf("LuaParseNumber parseStr:%s err:%s", parseStr, err)
} else {
for key := range keys {
nv := L.GetGlobal(key)
switch nv.Type() {
case lua.LTNil:
case lua.LTNumber:
keys[key] = nv.(lua.LNumber)
case lua.LTString:
keys[key] = lua.LNumber(Str2Int32(nv.String()))
default:
keys[key] = nv.(lua.LNumber)
}
}
}
}
func main() {
parseStr := "a=1;b='2';"
numberMap := map[string]lua.LNumber{
"a": 9,
"b": 9,
"c": 9,
}
LuaParseNumber(parseStr, numberMap)
fmt.Printf("numberMap %+v", numberMap)
}
- 运行结果: