Home  >  Article  >  Backend Development  >  How to Export Function Names in Go WASM?

How to Export Function Names in Go WASM?

Barbara Streisand
Barbara StreisandOriginal
2024-10-28 17:23:30451browse

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn