您好,登錄后才能下訂單哦!
這篇文章的內容主要圍繞GO的作用什么呢進行講述,文章內容清晰易懂,條理清晰,非常適合新手學習,值得大家去閱讀。感興趣的朋友可以跟隨小編一起閱讀吧。希望大家通過這篇文章有所收獲!
Go 的優點:實現快 + 資源占用低 + 任意環境隨便跑,綜合考慮在很多場景十分好使 。
Go 適合造輪子,哪個庫不好用就自己造。
Go 適合寫工具,比如 hugo 、hub、fzf,還有國人寫的 linux 下的百度 pan client 都是 go 實現的。
Go 適合實現 C/C++ 一部分業務,Java 的大部分業務。
Go 適合做最外層的膠水,通過 RPC/REST/CGO 粘合不同語言的模塊,而在這個膠水層還可以實現各種業務邏輯,又不用像 shell/py/node 有諸多顧慮和局限。
Go 提供了纖程、指針、 unsafe, cgo 加上 C/C++ 兼容的內存布局和跨平臺的匯編,有了這些你能做的事情的上限基本就非常高了。
所以問題不是它適合做什么,是你有能力用它做什么。
在用 Go 寫一個渲染器,因為學圖形,需要一個應用框架來復現各類圖形技術、論文和學習實踐 PBRT 。
開始用 C++ 和 Go 同時寫,主要實現是 C++,Go 只用來做架構探路,搞搞快速原型。
中間需要實現一個異步消息框架,負責 GLFW 的 key event 和 window event 與圖形邏輯、骨骼計算、camera 控制進行數據通訊,還要保證所有繪制 event 都在主線程做 draw call。這個功能用 Go 實現的邏輯 100 行不到,只用了3個特性:chan, init(),不定長參數。當初設計 + 查語法 + 寫完 + 測試只花了大概 40 分鐘,然后一直用到現在。
在做的過程中發現 Go 實現各種邏輯太方便了,而且基本上沒啥干不了的,最后決定全部用 Go ,放棄 C++。
中間發現 Go 的標準庫不支持 DDS 貼圖,直接擼了個 Go 版的 DDS 庫。大致就是看了下 wiki 了解了 DDS 格式,然后從 nv_dds 找到關鍵代碼,逐行翻譯成 Go 就搞定了,非常簡單。
現在在寫骨骼動畫和 GUI, GUI 在參考一個日本人移植到 Go 的 nanovg 和 nanogui,非常有價值,他用 Go 實現了基于 OpenGL 的 draw api 還用 Go 搞定了 true type 字體的繪制。
因為需要管理大量模型的狀態,打算用 orm + sqlite。但 gorm 的很多地方都不滿意,也在考慮自己擼。
現在這個渲染器是這個程度:
Go 不管寫業務還是造輪子都很高效,既有高級語言特性,又能當更好的 C 用,構建部署也簡單。
常規業務 Go 能被 C/C++ 碾壓的主要就是瞬時的峰值內存,這個無解,但碾 Java 也沒問題。
目前后端這塊我沒覺得什么是 Go 特別不適合干或者不能干的。
如果不用 Go,我估計也只會用 Rust,如果要寫大量矩陣運算,泛型和操作符重載是僅有的我想要但 Go 沒有的。
實際上用 Go 的很多也是多語言的牛人,比如 junegunn、spf13,都是背著幾個幾萬 star 項目。
最后舉幾個比較偏但有意思的項目:
hunterloftis/pbr 一個 Go 寫的基于物理渲染的光追渲染器
fogleman/pt 另一個光追渲染器
shibukawa/nanovgo 日本人移植的 Go 版的 nanovg,基于 OpenGL 實現了畫框、畫線、畫字的 Go API,相當于原來 Windows 上的 Direct Draw
shibukawa/nanogui-go 上面那位作者移植的 Go 版的 nanogui,基于他移植的 nanovgo 實現的 GUI 庫
Shopify/go-lua Go 實現的 lua 5.2 VM
wooga/go-entitas 一個非常精簡的 ECS 實現
最后說一句,這個世界上有太多有意思的問題和領域值得學習和探索。
語言最終是用來表達你思想和思維的,只要能幫你快速解決問題達到目標,對你而言就是好語言。
go是golang的簡稱,golang 是Google開發的一種靜態強類型、編譯型、并發型,并具有垃圾回收功能的編程語言,其語法與 C語言相近,但并不包括如枚舉、異常處理、繼承、泛型、斷言、虛函數等功能。
感謝你的閱讀,相信你對“GO的作用什么呢”這一問題有一定的了解,快去動手實踐吧,如果想了解更多相關知識點,可以關注億速云網站!小編會繼續為大家帶來更好的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。