WebAssembly - การทำงานกับ Go

Go ได้เพิ่มการรองรับ WebAssembly ตั้งแต่เวอร์ชัน 1.1 เป็นต้นไป เพื่อทดสอบการดาวน์โหลดครั้งแรกไป

ไปที่เว็บไซต์ golang ซึ่งมีอยู่ที่ https://golang.org/dl/และคลิกที่ดาวน์โหลดไป ตามระบบปฏิบัติการของคุณดาวน์โหลดและติดตั้ง 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 เมื่อดำเนินการคำสั่ง

ตอนนี้ให้เราทดสอบโค้ดในเบราว์เซอร์ ในการทำเช่นนั้นเราต้องได้รับ wasm_exec.js ซึ่งติดตั้งมาพร้อมกับ go

ไฟล์ wasm_exec.js จะอยู่ใน misc / wasm / folder in go

ตัวอย่าง

นี่คือรหัสสำหรับ testgo.html ที่ใช้ wasm_exec.js และ testnum.wasm

<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>

เอาต์พุต

ผลลัพธ์มีดังนี้ -