Maison  >  Article  >  développement back-end  >  Comment exporter les noms de fonctions dans Go WASM ?

Comment exporter les noms de fonctions dans Go WASM ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-28 17:23:30451parcourir

How to Export Function Names in Go WASM?

Exposition des noms de fonctions dans les exportations Go WASM

Lors de la compilation du code Go vers WASM, vous pouvez rencontrer une situation dans laquelle vous souhaitez conserver les noms de fonctions dans le fichier .wasm résultant. Par défaut, le compilateur Go standard n'exporte pas les noms de fonctions pendant le processus de compilation.

Pour obtenir l'exportabilité des noms de fonctions, vous avez deux options :

1. L'utilisation de TinyGo

TinyGo, un compilateur Go intégré et orienté WASM, prend en charge l'exportation de fonctions via les directives de commentaires //export ou //go:export. Voici un exemple :

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

Lors de la compilation avec TinyGo (par exemple, tinygo build -o wasm.wasm -target wasm ./main.go), la fonction de multiplication sera exposée dans le fichier WASM résultant.

2. Utilisation du compilateur Go standard (expérimental)

Le compilateur Go standard travaille actuellement sur l'introduction d'une fonctionnalité similaire à la directive //export de TinyGo. Cependant, cette fonctionnalité est encore en développement. Comme alternative, vous pouvez utiliser la fonction js.Global().Set(...) pour définir les fonctions Go comme propriétés de l'espace de noms global JS.

Exemple :

<code class="Go">import (
    "github.com/gopherjs/gopherjs/js"
)

func main() {
    js.Global().Set("multiply", multiply)
}

func multiply(x, y int) int {
    return x * y;
}</code>

Cette approche vous permet d'exposer la fonction de multiplication dans l'espace de noms JavaScript global, la rendant accessible dans votre code WASM.

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