WebAssembly - Làm việc với Go
Go đã hỗ trợ thêm cho WebAssembly từ phiên bản 1.1 trở đi. Để kiểm tra nó, trước tiên hãy tải xuống.
Truy cập trang web golang, có sẵn tại https://golang.org/dl/và nhấp vào Tải xuống Go. Theo hệ điều hành của bạn tải xuống và cài đặt Go.
Sau khi hoàn tất, hãy viết một chương trình đơn giản để thêm hai số.
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
}
Để biên dịch mã trên thành wasm, trước tiên hãy đặt các biến môi trường trong Go.
Bạn sẽ phải chạy lệnh sau:
Set GOOS=js
GOARCH=wasm
Sau khi hoàn tất, hãy thực hiện lệnh dưới đây:
go build -o testnum.wasm testnum.go
Bạn sẽ nhận được tệp testnum.wasm sau khi lệnh được thực thi.
Bây giờ hãy để chúng tôi kiểm tra mã trong trình duyệt. Để làm điều đó, chúng ta cần lấy wasm_exec.js, được cài đặt sẵn.
Tệp wasm_exec.js sẽ có sẵn trong thư mục misc / wasm / khi di chuyển.
Thí dụ
Đây là mã cho testgo.html sử dụng wasm_exec.js và 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>
Đầu ra
Kết quả như sau: