1. gluaLua 調(diào)用 Go 語(yǔ)言

        聯(lián)合創(chuàng)作 · 2023-10-01 01:06

        自己寫的一個(gè)go lua binding,為了使用方便,并沒(méi)有封裝很多l(xiāng)ua api,只是是為了實(shí)現(xiàn)以下功能的簡(jiǎn)單封裝:

        1. 可以將go函數(shù)注冊(cè)到lua中去,擴(kuò)展lua的函數(shù)庫(kù),參數(shù)自動(dòng)轉(zhuǎn)換,支持不定參數(shù)
        2. 可以同時(shí)執(zhí)行多個(gè)lua腳本
        3. 從go中嗲用lua中的函數(shù)
        4. 支持bool、int、float、string類型的相互轉(zhuǎn)換,其他類型可以傳遞到lua中,但是只能傳回go中使用

        這個(gè)binding很簡(jiǎn)單,下面的例子已經(jīng)把所有能調(diào)用的API都調(diào)用了一遍:)

        package main
        
        import (
        	"fmt"
        	"glua"
        )
        
        type Int struct {
        	I int
        }
        func NewInt() *Int {
        	return &Int{10}
        }
        func (i Int) PrintInt(str string) {
        	fmt.Println(str, i.I)
        }
        
        func main() {
        	L := glua.NewState()
        	
        	L.Openlibs()
        
        	var tlib = glua.Libfuncs{
        		"gotest", // lib name
        		map[string]interface{}{
        			"NewInt":    NewInt,          // lua function name, go function
        			"PrintInt":  (*Int).PrintInt, 
        			"goprintln": fmt.Println,     // 不定參數(shù)函數(shù)
        		},
        	}
        	if ok, err := L.Register(&tlib); !ok {
        		fmt.Println(err.Error())
        		return
        	}
        	// 執(zhí)行l(wèi)ua語(yǔ)句
        	L.Dostring(`gotest.PrintInt(gotest.NewInt(), "Int is")`) 
        	// 執(zhí)行l(wèi)ua腳本
        	L.Dofile("test.lua")
        	// 調(diào)用lua函數(shù)
        	L.Call("gotest.goprintln", "Call lua function.", 123456)
        }

        lua腳本

        --test.lua
        gotest.goprintln(true, 123, "lua", gotest.NewInt())

        如果使用上有什么問(wèn)題,請(qǐng)直接給我反饋,謝謝!

        瀏覽 31
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        編輯 分享
        舉報(bào)
          
          

            1. 欧洲一区| 国产欧美一区二区三区精品酒店 | 男女啪啪电影 | 毛片网站视频 | 免费无码婬片AAAA片在线蜜芽 |