WebAssembly - 使用 Go
-
简述
Go 从 1.1 版开始添加了对 WebAssembly 的支持。要测试它首先下载,Go。转到https://golang.org/dl/上的 golang 站点,然后单击下载 Go。根据您的操作系统下载并安装 Go。完成后,编写一个简单的程序,将两个数字相加。testnum.gopackage 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 }
要将上述代码编译为 wasm,首先在 Go 中设置环境变量。您将必须运行以下命令 -Set GOOS=js GOARCH=wasm
完成后,执行以下命令 -go build -o testnum.wasm testnum.go
执行命令后,您应该得到 testnum.wasm 文件。现在让我们在浏览器中测试代码。为此,我们需要获取随 go 一起安装的 wasm_exec.js。文件 wasm_exec.js 将在 go 的 misc/wasm/ 文件夹中可用。 -
例子
这是使用 wasm_exec.js 和 testnum.wasm 的 testgo.html 的代码。<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>
-
输出
输出如下 -