Maison >développement back-end >Golang >Comment exporter toutes les fonctions souhaitées lors de la compilation d'un programme Go vers WASM ?

Comment exporter toutes les fonctions souhaitées lors de la compilation d'un programme Go vers WASM ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-28 19:08:02551parcourir

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

Exportation de fonctions dans Go WASM

Problème :

Lors de la compilation d'un programme Go vers WASM, seul un sous-ensemble du les fonctions exportées sont conservées. Cela peut être problématique si vous avez besoin d'accéder à des fonctions spécifiques depuis JavaScript.

Question :

Comment exporter toutes les fonctions souhaitées lors de la compilation d'un programme Go vers WASM ?

Réponse :

Utilisation de TinyGo :

Si vous envisagez de vous concentrer sur le développement WASM, envisagez d'utiliser TinyGo. TinyGo fournit une directive de commentaire //export qui vous permet de spécifier quelles fonctions doivent être exportées.

<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>

Utilisation du compilateur Go standard (expérimental) :

Le Le compilateur Go standard a une discussion en cours sur la réplication de la fonctionnalité d'exportation de TinyGo. Une solution potentielle consiste à définir des fonctions sur l'espace de noms global JS à l'aide de js.Global().Set(...).

Exemple :

<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>

Compilation :

Compilez le programme Go vers WASM à l'aide de la commande suivante :

<code class="sh">GOOS=js GOARCH=wasm go build -o main.wasm main.go</code>

Cela devrait exporter la fonction MyFunc et la rendre accessible à JavaScript.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn