WebAssembly - Trabalhando com Go
Go adicionou suporte para WebAssembly da versão 1.1 em diante. Para testar primeiro faça o download, vá.
Vá para o site golang, que está disponível em https://golang.org/dl/e clique em Download Go. De acordo com o seu sistema operacional, baixe e instale o Go.
Uma vez feito isso, escreva um programa simples que adiciona dois números em go.
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 o código acima para wasm, primeiro defina as variáveis de ambiente em Go.
Você terá que executar o seguinte comando -
Set GOOS=js
GOARCH=wasm
Uma vez feito isso, execute o comando abaixo -
go build -o testnum.wasm testnum.go
Você deve obter o arquivo testnum.wasm assim que o comando for executado.
Vamos agora testar o código no navegador. Para fazer isso, precisamos obter o wasm_exec.js, que é instalado com go.
O arquivo wasm_exec.js estará disponível em misc / wasm / folder em go.
Exemplo
Aqui está o código para testgo.html que usa 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>
Resultado
O resultado é o seguinte -