WebAssembly - 使用 Go



1.1 版本及以後的 Go 已新增對 WebAssembly 的支援。要首先對其進行測試,請下載 Go。

轉至 golang 網站,該網站可在 https://golang.org.tw/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
廣告