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>
เอาต์พุต
ผลลัพธ์มีดังนี้ -