WebAssembly - Trabajar con Go
Go ha agregado soporte para WebAssembly desde la versión 1.1 en adelante. Para probarlo primero descargue, vaya.
Vaya al sitio de golang, que está disponible en https://golang.org/dl/y haga clic en Descargar Go. Según su sistema operativo, descargue e instale Go.
Una vez hecho esto, escriba un programa simple que agregue dos números.
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
}
Para compilar el código anterior en wasm, primero configure las variables de entorno en Go.
Tendrás que ejecutar el siguiente comando:
Set GOOS=js
GOARCH=wasm
Una vez hecho esto, ejecute el siguiente comando:
go build -o testnum.wasm testnum.go
Debería obtener el archivo testnum.wasm una vez que se ejecute el comando.
Probemos ahora el código en el navegador. Para hacer eso, necesitamos obtener el wasm_exec.js, que se instala con go.
El archivo wasm_exec.js estará disponible dentro de la carpeta misc / wasm / en go.
Ejemplo
Aquí está el código para testgo.html que hace uso de wasm_exec.js y 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>
Salida
La salida es la siguiente: