问题:
将 Go 程序编译到 WASM 时,只有导出的函数被保留。如果您需要从 JavaScript 访问特定函数,这可能会出现问题。
问题:
我们如何在将 Go 程序编译到 WASM 时导出所有所需的函数?
答案:
使用 TinyGo:
如果您打算专注于 WASM 开发,请考虑使用 TinyGo。 TinyGo 提供了 //export 注释指令,允许您指定应导出哪些函数。
<code class="go">// This function is exported to JavaScript, so can be called using // exports.multiply() in JavaScript. //export multiply func multiply(x, y int) int { return x * y; }</code>
使用标准 Go 编译器(实验):
The标准 Go 编译器正在持续讨论复制 TinyGo 的导出功能。一种可能的解决方案是使用 js.Global().Set(...).
示例:
<code class="go">package main import ( "github.com/gopherjs/gopherjs/js" ) func main() { js.Global().Set("MyFunc", MyFunc) } func MyFunc() { fmt.Println("MyFunc called from JavaScript") }</code>
编译:
使用以下命令将 Go 程序编译为 WASM:
<code class="sh">GOOS=js GOARCH=wasm go build -o main.wasm main.go</code>
这应该导出 MyFunc 函数并使其可供 JavaScript 访问。
以上是将Go程序编译到WASM时如何导出所有需要的函数?的详细内容。更多信息请关注PHP中文网其他相关文章!