首頁 >後端開發 >Golang >如何匯出已編譯的 Go WASM 檔案中的函數名稱?

如何匯出已編譯的 Go WASM 檔案中的函數名稱?

Patricia Arquette
Patricia Arquette原創
2024-10-31 03:28:02573瀏覽

How can I export function names in compiled Go WASM files?

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

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