日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

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

發布時間:2025/3/15 67 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的方式的全部內容,希望文章能夠幫你解決所遇到的問題。

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