问题描述
前端学习golang,尝试wasm
js 给 go 传递Object过去,
js.Value 格式没法通过range遍历
问题出现的环境背景及自己尝试过哪些方法
执行 GOOS=js GOARCH=wasm go build -o main.wasm
报错 ./main.go:25:14: cannot range over obj (type js.Value)
上传图片一直没传上去,就不截图了
也尝试过js通过JSON.stringify转成字符串,golang解析,同样的不行,不一样的类型错误。
也查过一系列资料,没有解决问题。
相关代码
package main
import (
"fmt"
"syscall/js"
)
func main() {
done := make(chan int, 0)
js.Global().Set("hook", createHook())
<-done
}
func createHook() js.Func {
return js.FuncOf(func(this js.Value, args []js.Value) interface{} {
obj := args[0]
fmt.Println(obj)
for key := range obj {
val := obj.Get(key)
fmt.Println(val)
}
return nil
})
}
如何遍历JS中的对象?
额外可以的话,告知下我golang 能否传递struct或者类似于JS中的对象(内部几个方法)到windows, 想减少window上的全局变量。
obj的类型是js.Value,是个结构体,它不能被for range遍历