Home >Backend Development >Golang >How to Export Function Names in Go WASM?
Exposing Function Names in Go WASM Exports
When compiling Go code to WASM, you may encounter a situation where you want to preserve function names in the resulting .wasm file. By default, the standard Go compiler doesn't export function names during the compilation process.
To achieve function name exportability, you have two options:
1. Using TinyGo
TinyGo, an embedded and WASM-oriented Go compiler, provides support for exporting functions through the //export or //go:export comment directives. Here's an example:
<code class="Go">//export multiply func multiply(x, y int) int { return x * y; }</code>
When compiling with TinyGo (e.g., tinygo build -o wasm.wasm -target wasm ./main.go), the multiply function will be exposed in the resulting WASM file.
2. Using the Standard Go Compiler (Experimental)
The standard Go compiler is currently working on introducing a feature similar to TinyGo's //export directive. However, this feature is still under development. As an alternative, you can use the js.Global().Set(...) function to set Go functions as properties of the JS global namespace.
Example:
<code class="Go">import ( "github.com/gopherjs/gopherjs/js" ) func main() { js.Global().Set("multiply", multiply) } func multiply(x, y int) int { return x * y; }</code>
This approach allows you to expose the multiply function in the global JavaScript namespace, making it accessible in your WASM code.
The above is the detailed content of How to Export Function Names in Go WASM?. For more information, please follow other related articles on the PHP Chinese website!