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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions