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