在 Go WASM 中导出函数名称
您希望在已编译的 Go WASM 文件中导出函数名称。默认情况下,这些名称在生成的 .wasm 文件中不可见,因此很难从外部上下文调用它们。
TinyGo 的 //export 指令
TinyGo,专为嵌入式和 WASM 环境量身定制的 Go 编译器可为您的问题提供解决方案。它支持 //export 指令,该指令在编译期间保留函数名称。例如:
<code class="go">//export multiply func multiply(x, y int) int { return x * y; }</code>
该指令确保乘法函数在编译的 WASM 文件中仍然可以通过其名称进行访问。
标准 Go 编译器解决方案
对于标准 Go 编译器,关于添加类似功能的讨论正在进行中。不过,目前,您可以通过使用 js.Global().Set(...).
import ( "syscall/js" ) func main() { js.Global().Set("multiply", exportedMultiply) } //export multiply func exportedMultiply(this js.Value, args []js.Value) interface{} { if len(args) != 2 { return "Invalid number of arguments" } x, y := int(args[0].Int()), int(args[1].Int()) return x * y }
将导出函数设置到 JS 全局命名空间来实现此目的。在本例中,multiply 导出到 JS全局范围,允许使用exports.multiply()从JavaScript调用它。
要构建Go WASM文件,请使用以下命令:
GOOS=js GOARCH=wasm go build -o main.wasm
以上是如何导出已编译的 Go WASM 文件中的函数名称?的详细内容。更多信息请关注PHP中文网其他相关文章!