日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

golang 获取当天0点时间_golang使用webAssembly的方式

發布時間:2025/3/15 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 golang 获取当天0点时间_golang使用webAssembly的方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

WebAssembly (WASM) 是一種新的編碼方式,可以在現代的網絡瀏覽器中運行- 它是一種低級的類匯編語言,具有緊湊的二進制格式,可以接近原生的性能. 可以將C/C++/Rust/GO代碼編譯成.wasm文件, 然后運行在web上面.

本文僅介紹Golang與WASM使用的相關基礎知識.

環境

需要golang版本高于go1.11, 本文golang版本:

$ go version > go version go1.11.1 darwin/amd64

js中調用golang函數案例

本案例基于goland IDE編寫, 為了獲取syscall/js庫的自動提示, 需要對IDE進行如下設置:

設置好之后, 進行編輯go文件: main.go

package mainimport ("fmt""syscall/js" )func foo( args []js.Value) {fmt.Println("hellow wasm")fmt.Println(args) }func main() {// 將golang中foo函數注入到window.foo中js.Global().Set("foo", js.NewCallback(foo))// 將100注入到 window.value中js.Global().Set("value", 100)select {} }

將此main.go文件, 編譯成wasm文件:

GOARCH=wasm GOOS=js go build -o test.wasm main.go

接下來需要開啟一個簡單的web服務器并將上一步的wasm文件復制到案例目錄中:

server.go:

package mainimport "net/http"func main() {http.ListenAndServe(":8080", http.FileServer(http.Dir("./test1"))) // 此為案例文件夾目錄 }

將golang源碼中的wasm_exec.js復制到本案例中:

cp $GOROOT/misc/wasm/wasm_exec.js .

index.html:

<html> <head><meta charset="utf-8"><script src="wasm_exec.js"></script><script>const go = new Go();WebAssembly.instantiateStreaming(fetch("test.wasm"), go.importObject).then((result) => {go.run(result.instance);});</script> </head> <body></body> </html>

整體案例文件:

$ tree test1 test1 ├── index.html ├── server.go ├── test.wasm └── wasm_exec.js

運行 go run server.go即可啟動服務

瀏覽器中訪問 http://127.0.0.1:8080/index.html, 右鍵->檢查->console

即可對golang中的函數 以及 屬性進行訪問.

GO獲取DOM元素, 操作標簽屬性

同樣的方式, main.go中:

package mainimport ("syscall/js" )func setDivRedColor(args []js.Value) {// 獲取DOM元素, 進行設置屬性, call方法為調用js方法js.Global().Get("document").Call("getElementById", "div").Set("style", "width: 300px; height: 300px; background-color: red")// 注意, 此處設置style的時候, 是會覆蓋掉html中的style設置 }func main() {js.Global().Set("setDivRedColor", js.NewCallback(setDivRedColor))select {} }

進行編譯, 得到wasm文件, 復制到案例項目中

項目中server.go不變, index.html改為:

<html> <head><meta charset="utf-8"><script src="wasm_exec.js"></script><script>const go = new Go();WebAssembly.instantiateStreaming(fetch("test.wasm"), go.importObject).then((result) => {go.run(result.instance);});</script> </head> <body><div style="width: 300px; height: 300px; background-color: yellow" id="div"></div> </body> </html>

啟動服務, 瀏覽器訪問http://127.0.0.1:8080/index.html

當console中調用對應的golang函數:

總結

以上就是Go中使用WASM的基本方式, golang對于WASM支持也在不斷的加強. 此案例編譯生成的wasm文件為1.4M, 后續也許會優化縮小.

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的golang 获取当天0点时间_golang使用webAssembly的方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。