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 などの変換関数がプロジェクトで提供されていますが、事前に型が分かっている必要があります。分からない場合は型判定を行う必要があります。ここでは gopher -luar を使用して型変換を容易にします。
golang と lua は相互に関数を呼び出しますgolang の関数は func(L *lua.State に変換する必要があります) ) int this この形式は lua に注入できます。戻りパラメータの int は戻りパラメータの数を表します。
value := L.Get(1) switch value.Type() { case lua.LTString: case lua.LTTable: .... }
golang で lua 関数を呼び出すには、最初に lua スクリプトでこの関数を定義する必要があります次に、CallByParam を呼び出します:
func hello(L *lua.State) int { //将返回参数压入栈中 L.Push(lua.LString("hello")) //返回参数为1个 return 1 } //注入lua中 L.SetGlobal("hello", L.NewFunction(hello))
以上がgolang luaの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。