WebAssembly - 使用 Go



1.1 版本及以后的 Go 已添加对 WebAssembly 的支持。要首先对其进行测试,请下载 Go。

转至 golang 网站,该网站可在 https://golang.ac.cn/dl/ 获得,然后单击“Download Go”(下载 Go)。根据你的操作系统,下载并安装 Go。

完成后,编写一个简单的程序,在 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 
}

要将以上代码编译为 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>

输出

输出如下 −

Testnum WASM
广告