【golang x lua】 golang解析lua串中的数字变量

本文介绍了如何使用 Gopher-Lua 库在 Go 语言中解析 Lua 字符串,通过 Str2Int32 函数实现字符串转 int32,并展示了 LuaParseNumber 函数的实际应用,展示了如何覆盖 Lua 变量并更新 map 结果。
摘要由CSDN通过智能技术生成
package main

import (
	"fmt"
	lua "github.com/yuin/gopher-lua"
	"strconv"
)

// Str2Int32 string 转 int32
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{ // 设定默认值都是 9
		"a":    9,
		"b":   	9,
		"c":  	9,
	}

	LuaParseNumber(parseStr, numberMap) // 运行lua串, 覆盖 a 、b 、c 变量
	fmt.Printf("numberMap %+v", numberMap)
}
  • 运行结果:
    在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值