WebAssembly - Lavorare con Go
Go ha aggiunto il supporto per WebAssembly dalla versione 1.1 in poi. Per provarlo prima scarica, vai.
Vai al sito di golang, disponibile all'indirizzo https://golang.org/dl/e fare clic su Download Go. Secondo il tuo sistema operativo, scarica e installa Go.
Una volta fatto, scrivi un semplice programma che aggiunge due numeri in movimento.
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
}
Per compilare il codice sopra in wasm, impostare prima le variabili di ambiente in Go.
Dovrai eseguire il seguente comando:
Set GOOS=js
GOARCH=wasm
Una volta fatto, esegui il comando seguente:
go build -o testnum.wasm testnum.go
Dovresti ottenere il file testnum.wasm una volta eseguito il comando.
Proviamo ora a testare il codice nel browser. Per fare ciò, dobbiamo ottenere il file wasm_exec.js, installato con go.
Il file wasm_exec.js sarà disponibile nella cartella misc / wasm / in go.
Esempio
Ecco il codice per testgo.html che utilizza wasm_exec.js e 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>
Produzione
L'output è il seguente: