WebAssembly - Working with Go


Go has added support for WebAssembly from version 1.1 onwards. To test it first download, Go.

Go to the golang site, which is available at https://golang.org/dl/ and click on Download Go. As per your operating system download and install Go.

Once done, write a simple program that adds two numbers in 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 

To compile above code to wasm, first set the environment variables in Go.

You will have to run following command −

Set GOOS=js

Once done, execute the below command −

go build -o testnum.wasm testnum.go

You should get testnum.wasm file once the command is executed.

Let us now test the code in the browser. To do that, we need to get the wasm_exec.js, that is installed with go.

The file wasm_exec.js will be available inside misc/wasm/ folder in go.


Here, is the code for testgo.html that makes use of wasm_exec.js and testnum.wasm.

      <meta charset="utf-8"/>
      <script src="wasm_exec.js"></script>
      <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); 


The output is as follows −

Testnum WASM