Maison  >  Article  >  développement back-end  >  Comment puis-je exporter les noms de fonctions dans des fichiers Go WASM compilés ?

Comment puis-je exporter les noms de fonctions dans des fichiers Go WASM compilés ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 03:28:02481parcourir

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

Exportation des noms de fonctions dans Go WASM

Vous souhaitez exporter les noms de fonctions dans des fichiers Go WASM compilés. Par défaut, ces noms ne sont pas visibles dans le fichier .wasm résultant, ce qui rend difficile leur appel depuis des contextes externes.

Directive //export de TinyGo

TinyGo, un compilateur Go adapté aux environnements embarqués et WASM, fournit une solution à votre problème. Il prend en charge la directive //export, qui préserve les noms de fonctions lors de la compilation. Par exemple :

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

Cette directive garantit que la fonction de multiplication reste accessible par son nom dans le fichier WASM compilé.

Solution de compilateur Go standard

Pour le compilateur Go standard, une discussion est en cours sur l'ajout d'une fonctionnalité similaire. Cependant, actuellement, vous pouvez y parvenir en définissant les fonctions exportées sur l'espace de noms global JS à l'aide de 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
}

Dans cet exemple, la multiplication est exportée vers le JS. portée globale, permettant de l'appeler depuis JavaScript à l'aide de exports.multiply().

Pour créer votre fichier Go WASM, utilisez la commande suivante :

GOOS=js GOARCH=wasm go build -o main.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