首頁  >  文章  >  後端開發  >  將Go程式編譯到WASM時如何導出所有需要的函式?

將Go程式編譯到WASM時如何導出所有需要的函式?

Linda Hamilton
Linda Hamilton原創
2024-10-28 19:08:02455瀏覽

How to Export All Desired Functions When Compiling a Go Program to WASM?

在Go WASM 中導出函數

問題:

將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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn