WebAssembly - Utilisation de Go

Go a ajouté la prise en charge de WebAssembly à partir de la version 1.1. Pour le tester, téléchargez d'abord, allez.

Accédez au site du golang, disponible sur https://golang.org/dl/et cliquez sur Download Go. Selon votre système d'exploitation, téléchargez et installez Go.

Une fois terminé, écrivez un programme simple qui ajoute deux nombres à la fois.

testnum.go

package main
import "fmt"
func main() { 
   var a int = 100 
   var b int = 200 
   var ret int 
   ret = sum(a, b) 
   fmt.Printf( "Sum is : %d\n", ret ) 
}
 
/* function returning the max between two numbers */ 
func sum(num1, num2 int) int { 
   return num1+num2 
}

Pour compiler le code ci-dessus en wasm, définissez d'abord les variables d'environnement dans Go.

Vous devrez exécuter la commande suivante -

Set GOOS=js
GOARCH=wasm

Une fois terminé, exécutez la commande ci-dessous -

go build -o testnum.wasm testnum.go

Vous devriez obtenir le fichier testnum.wasm une fois la commande exécutée.

Testons maintenant le code dans le navigateur. Pour ce faire, nous devons obtenir le fichier wasm_exec.js, qui est installé avec go.

Le fichier wasm_exec.js sera disponible dans le dossier misc / wasm / dans go.

Exemple

Voici le code pour testgo.html qui utilise wasm_exec.js et testnum.wasm.

<html> 
   <head> 
      <meta charset="utf-8"/>
      <script src="wasm_exec.js"></script>
   </head>
   <body>
      <script type="text/javascript"> 
         const importObj = {
            module: {} 
         };
         const go = new Go(); 
         async function fetchAndInstantiate() { 
            const response = await fetch("testnum.wasm"); 
            const buffer = await response.arrayBuffer(); 
            const obj = await WebAssembly.instantiate(buffer, go.importObject); 
            console.log(obj); 
            go.run(obj.instance); 
         } 
         fetchAndInstantiate(); 
      </script>
   </body>
</html>

Production

La sortie est la suivante -