WebAssembly - 使用 Go

  • 简述

    Go 从 1.1 版开始添加了对 WebAssembly 的支持。要测试它首先下载,Go。
    转到https://golang.org/dl/上的 golang 站点,然后单击下载 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