内容简介:系列文章编写main.go将main.go编译成lib.wasm
系列文章 Go WebAssembly 入门(一)
Getting Started
编写main.go
package main
import (
"strconv"
"syscall/js"
)
// 传入value1, value2, result三个元素的id,将value1+value2结果赋给result元素
func add(ids []js.Value) {
// 根据id获取输入值
value1 := js.Global().Get("document").Call("getElementById", ids[0].String()).Get("value").String()
value2 := js.Global().Get("document").Call("getElementById", ids[1].String()).Get("value").String()
int1, _ := strconv.Atoi(value1)
int2, _ := strconv.Atoi(value2)
// 将相加结果set给result元素
js.Global().Get("document").Call("getElementById", ids[2].String()).Set("value", int1+int2)
}
// 添加监听事件
func registerCallbacks() {
js.Global().Set("add", js.NewCallback(add))
}
func main() {
c := make(chan struct{}, 0)
println("Go WebAssembly Initialized!")
registerCallbacks()
<-c
}
将main.go编译成lib.wasm
GOOS=js GOARCH=wasm go build -o lib.wasm main.go
在index.html中调用lib.wasm
<html>
<head>
<meta charset="utf-8">
<script src="wasm_exec.js"></script>
<script>
if (!WebAssembly.instantiateStreaming) { // polyfill
WebAssembly.instantiateStreaming = async (resp, importObject) => {
const source = await (await resp).arrayBuffer();
return await WebAssembly.instantiate(source, importObject);
};
}
const go = new Go();
let mod, inst;
WebAssembly.instantiateStreaming(fetch("lib.wasm"), go.importObject).then(async (result) => {
mod = result.module;
inst = result.instance;
await go.run(inst)
});
</script>
</head>
<body>
<input type="text" id="value1"/>
<input type="text" id="value2"/>
<button type="button" id="add" onClick="add('value1', 'value2', 'result');">add</button>
<input type="text" id="result"/>
</body>
</html>
打开server,在浏览器打开即可调用WebAssembly二进制文件执行。
go run server.go
示例代码GitHub
reference
以上所述就是小编给大家介绍的《Go WebAssembly 入门(二)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- TiDB入门(四):从入门到“跑路”
- MyBatis从入门到精通(一):MyBatis入门
- MyBatis从入门到精通(一):MyBatis入门
- Docker入门(一)用hello world入门docker
- 赵童鞋带你入门PHP(六) ThinkPHP框架入门
- 初学者入门 Golang 的学习型项目,go入门项目
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
统计自然语言处理基础
Chris Manning、Hinrich Schütze / 苑春法、李伟、李庆中 / 电子工业出版社 / 2005-1 / 55.00元
《统计自然语言处理基础:国外计算机科学教材系列》是一本全面系统地介绍统计自然语言处理技术的专著,被国内外许多所著名大学选为计算语言学相关课程的教材。《统计自然语言处理基础:国外计算机科学教材系列》涵盖的内容十分广泛,分为四个部分,共16章,包括了构建自然语言处理软件工具将用到的几乎所有理论和算法。全书的论述过程由浅入深,从数学基础到精确的理论算法,从简单的词法分析到复杂的语法分析,适合不同水平的读......一起来看看 《统计自然语言处理基础》 这本书的介绍吧!