这是indexloc提供的服务,不要输入任何密码
Skip to content

Global Variable of type Lua Table #129

@WillianBR

Description

@WillianBR

I'm sorry for bothering you guys, but I'm have hard time trying to create a global variable on go-lua of type table.

I'd not any issue to return a table from a function call (GO Lang internal func, returning a table type variable.).

But my litle tool need to create a global variable of type table with system information fields.

And it would be nice if I was able to set it as read-only. Using pure LUA, I can set a metatable, but I never did such thing using API (On this case GO code).

The part of expose a GO Lang function to LUA script and return a table as result was prety easy!

Does anybody did something like that?


For those who need return tables from GO function to Lua script, below is my code! I hope it help!

Example:

// Exposed functions table
var goFuncsTable = []lua.RegistryFunction{
	{"AppEnvironment", func(l *lua.State) int { return go_exposedLuaFunction(l) } },
}

// Register functions 
func UtilOpen(l *lua.State) int {
	lua.NewLibrary(l, goFuncsTable)
	return 1
}

// Function implementation itself
func go_exposedLuaFunction(l *lua.State) int {

	l.CreateTable(0, 6)

	l.PushString("1.0.0")
	l.SetField(-2, "Version")

	l.PushString(BuildDate)
	l.SetField(-2, "BuildDate")

	l.PushString(BuildTime)
	l.SetField(-2, "BuildTime")

	l.PushString(runtime.GOOS)
	l.SetField(-2, "OS")

	l.PushString(runtime.GOARCH)
	l.SetField(-2, "Arch")

	l.PushInteger(runtime.GOMAXPROCS(0))
	l.SetField(-2, "CPUCores")

	return 1 // Returning one single table
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions