github에는 gopher-lua라는 golang으로 작성된 Lua 가상 머신이 있습니다.
저자는 문서에서 lua의 데이터 유형과 golang의 데이터 유형 간의 대응 관계를 설명했습니다. 유형이 L로 시작하고 유형 이름이 LT로 시작한다는 점은 주목할 가치가 있습니다. (추천 학습: go)
golang의 데이터를 lua의 데이터로 변환하려면 L로 시작하는 유형으로 변환해야 합니다.
str := "hello" num := 10 L.LString(str) L.LNumber(float64(num))
lua의 데이터를 golang의 데이터로 변환하려면 프로젝트에서 ToInt, CheckString을 제공합니다. 변환을 위한 클래스 함수이지만 유형을 미리 알고 있어야 합니다.
value := L.Get(1) switch value.Type() { case lua.LTString: case lua.LTTable: .... }
여기서 gopher-luar를 사용하여 유형 변환을 용이하게 할 수도 있습니다.
golang 및 lua. 함수 호출
golang의 함수는 lua에 주입되기 전에 func(L *lua.State) int 형식으로 변환되어야 합니다. 반환 매개 변수의 int는 반환 매개 변수의 수를 나타냅니다.
func hello(L *lua.State) int { //将返回参数压入栈中 L.Push(lua.LString("hello")) //返回参数为1个 return 1 } //注入lua中 L.SetGlobal("hello", L.NewFunction(hello))
golang에서 lua 함수를 호출합니다. 먼저 lua 스크립트에서 이 함수를 정의한 다음 CallByParam:
//先获取lua中定义的函数 fn := L.GetGlobal("hello") if err := L.CallByParam(lua.P{ Fn: fn, NRet: 1, Protect: true, }, lua.LNumber(10)); err != nil { panic(err) } //这里获取函数返回值 ret := L.Get(-1)
위 내용은 골랑 루아 사용법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!