Go WebAssembly 入门(二)
Go WebAssembly 入门(二)
系列文章 Go WebAssembly 入门(一)Getting Started编写main.go代码语言:javascript代码运行次数:0运行复制package main
import (
"strconv"
"syscall/js"
)
// 传入value1, value2, result三个元素
Go WebAssembly 入门(二)
系列文章 Go WebAssembly 入门(一)
Getting Started
编写main.go
代码语言:javascript代码运行次数:0运行复制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", (add))
}
func main() {
c := make(chan struct{}, 0)
println("Go WebAssembly Initialized!")
registerCallbacks()
<-c
}
将main.go编译成lib.wasm
代码语言:javascript代码运行次数:0运行复制GOOS=js GOARCH=wasm go build -o lib.wasm main.go
在index.html中调用lib.wasm
代码语言:javascript代码运行次数:0运行复制<html>
<head>
<meta charset="utf-8">
<script src="wasm_exec.js"></script>
<script>
if (!WebAssembly.instantiateStreaming) { // polyfill
WebAssembly.instantiateStreaming = async (resp, importObject) => {
ct source = await (await resp).arrayBuffer();
return await WebAssembly.instantiate(source, importObject);
};
}
ct go = new Go();
let mod, inst;
WebAssembly.instantiateStreaming(fetch("lib.wasm"), go.importObject).then(async (result) => {
mod = ;
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二进制文件执行。
代码语言:javascript代码运行次数:0运行复制go run server.go
示例代码GitHub
reference
- /
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上传时间: 2025-07-21 06:28:25
推荐阅读
留言与评论(共有 12 条评论) |
本站网友 龙漫ps2模拟器 | 5分钟前 发表 |
原始发表:2022-0-16 | |
本站网友 9月16 | 14分钟前 发表 |
0) println("Go WebAssembly Initialized!") registerCallbacks() <-c }将main.go编译成lib.wasm代码语言:javascript代码运行次数:0运行复制GOOS=js GOARCH=wasm go build -o lib.wasm main.go在index.html中调用lib.wasm代码语言:javascript代码运行次数:0运行复制<html> <head> <meta charset="utf-8"> <script src="wasm_exec.js"></script> <script> if (!WebAssembly.instantiateStreaming) { // polyfill WebAssembly.instantiateStreaming = async (resp | |
本站网友 天台二手房出售 | 7分钟前 发表 |
代码语言:javascript代码运行次数:0运行复制go run server.go示例代码GitHubreference/本文参与 腾讯云自媒体同步曝光计划 | |
本站网友 城市房地产税 | 1分钟前 发表 |
_ | |
本站网友 最新的法律法规 | 8分钟前 发表 |
分享自作者个人站点/博客 | |
本站网友 李清泉 | 4分钟前 发表 |
_ | |
本站网友 昭通美食 | 20分钟前 发表 |
(add)) } func main() { c | |
本站网友 李光洁博客 | 12分钟前 发表 |
'value2' | |
本站网友 马术场 | 28分钟前 发表 |
ids[0].String()).Get("value").String() value2 | |
本站网友 中间页 | 10分钟前 发表 |
= strconv.Atoi(value1) int2 | |
本站网友 安利护肤品 | 25分钟前 发表 |
代码语言:javascript代码运行次数:0运行复制go run server.go示例代码GitHubreference/本文参与 腾讯云自媒体同步曝光计划 |