Heim >Backend-Entwicklung >Golang >Wie kann ich Funktionsnamen in kompilierte Go WASM-Dateien exportieren?

Wie kann ich Funktionsnamen in kompilierte Go WASM-Dateien exportieren?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-31 03:28:02630Durchsuche

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

Funktionsnamen in Go WASM exportieren

Sie möchten Funktionsnamen in kompilierte Go WASM-Dateien exportieren. Standardmäßig sind diese Namen in der resultierenden .wasm-Datei nicht sichtbar, was es schwierig macht, sie aus externen Kontexten aufzurufen.

TinyGos //export-Direktive

TinyGo, Ein Go-Compiler, der auf eingebettete und WASM-Umgebungen zugeschnitten ist, bietet eine Lösung für Ihr Problem. Es unterstützt die Direktive //export, die Funktionsnamen während der Kompilierung beibehält. Zum Beispiel:

<code class="go">//export multiply
func multiply(x, y int) int {
    return x * y;
}</code>

Diese Direktive stellt sicher, dass die Multiplikationsfunktion über ihren Namen in der kompilierten WASM-Datei zugänglich bleibt.

Standard Go Compiler Solution

Für den Standard-Go-Compiler wird derzeit darüber diskutiert, eine ähnliche Funktion hinzuzufügen. Derzeit können Sie dies jedoch erreichen, indem Sie exportierte Funktionen mithilfe von js.Global().Set(...) auf den globalen JS-Namespace festlegen.

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
}

In diesem Beispiel wird Multiplikation in den JS exportiert globaler Gültigkeitsbereich, sodass er mit exports.multiply() aus JavaScript aufgerufen werden kann.

Um Ihre Go WASM-Datei zu erstellen, verwenden Sie den folgenden Befehl:

GOOS=js GOARCH=wasm go build -o main.wasm

Das obige ist der detaillierte Inhalt vonWie kann ich Funktionsnamen in kompilierte Go WASM-Dateien exportieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn