>백엔드 개발 >Golang >골랑 루아 사용법

골랑 루아 사용법

(*-*)浩
(*-*)浩원래의
2019-12-13 13:30:053650검색

골랑 루아 사용법

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.