部署簡單。Go編譯生成的是一個靜態可執行文件,除了glibc外沒有其他外部依賴。這讓部署變得異常方便:目標機器上只需要一個基礎的系統和必要的管理、監控工具,完全不需要操心應用所需的各種包、庫的依賴關系,大大減輕了維護的負擔。這和Python有著巨大的區別。由于歷史的原因,Python的部署工具生態相當混亂【比如setuptools,distutils,pip,
創新互聯是一家專業提供佛山企業網站建設,專注與網站制作、做網站、H5頁面制作、小程序制作等業務。10年已為佛山眾多企業、政府機構等服務。創新互聯專業網絡公司優惠進行中。
buildout的不同適用場合以及兼容性問題】。官方PyPI源又經常出問題,需要搭建私有鏡像,而維護這個鏡像又要花費不少時間和精力。
并發性好。Goroutine和channel使得編寫高并發的服務端軟件變得相當容易,很多情況下完全不需要考慮鎖機制以及由此帶來的各種問題。單個Go應用也能有效的利用多個CPU核,并行執行的性能好。這和Python也是天壤之比。多線程和多進程的服務端程序編寫起來并不簡單,而且由于全局鎖GIL的原因,多線程的Python程序并不能有效利用多核,只能用多進程的方式部署;如果用標準庫里的multiprocessing包又會對監控和管理造成不少的挑戰【我們用的supervisor管理進程,對fork支持不好】。部署Python應用的時候通常是每個CPU核部署一個應用,這會造成不少資源的浪費,比如假設某個Python應用啟動后需要占用100MB內存,而服務器有32個CPU核,那么留一個核給系統、運行31個應用副本就要浪費3GB的內存資源。
良好的語言設計。從學術的角度講Go語言其實非常平庸,不支持許多高級的語言特性;但從工程的角度講,Go的設計是非常優秀的:規范足夠簡單靈活,有其他語言基礎的程序員都能迅速上手。更重要的是Go自帶完善的工具鏈,大大提高了團隊協作的一致性。比如gofmt自動排版Go代碼,很大程度上杜絕了不同人寫的代碼排版風格不一致的問題。把編輯器配置成在編輯存檔的時候自動運行gofmt,這樣在編寫代碼的時候可以隨意擺放位置,存檔的時候自動變成正確排版的代碼。此外還有gofix,
govet等非常有用的工具。
執行性能好。雖然不如C和Java,但通常比原生Python應用還是高一個數量級的,適合編寫一些瓶頸業務。內存占用也非常省。
對比于其他語言的程序,Go語言的跨平臺能力是真的強,拿.Net和JAVA來說吧,.Net在.Net core出現之前是不能跨平臺的,只能在windows上編譯運行,即使是.net core出現以后,跨平臺的程序也是相當的麻煩。而java雖然一直都可以跨平臺,但是運行JAVA程序的機器上也必須要有JAVA程序運行環境JRE。而相對于Go程序,跨平臺就簡單的多了,只需要在編譯指定目標程序運行的架構和環境即可編譯出指定操作系統和架構的程序。
以上是指定了go的環境變量后執行的go build命令進行目標程序的構建,這種方式會一直生效的,如果不讓他一直生效,可以在構建的時候臨時指定環境變量,下面以window的環境為例,來介紹臨時指定環境變量的方式構建可以在Linux環境下運行的可執行程序:
可以根據不同的架構和操作系統將其編寫為不同的.bat的可執行文件放置在程序的根目錄,Linux的和MAC的也一樣編寫成腳本文件放置在程序的根目錄,這樣在構建的時候就不用再敲命令了,直接運行腳本就可以了。
Java程序編譯打包后為war包或者是java包,必須執行java -jar 命令或者將其放置到tomcat的指定目錄下,運行tomcat程序。而Go語言編寫的程序最終為可執行的文件(window下編譯出的是.exe的可執行文件),只需要將其賦予可執行的權限就可以直接運行了。
構建JAVA程序的鏡像需要指定java的基礎鏡像,否則就需要在鏡像中安裝java的運行環境了,下面展示的是構建的一個JAVA程序的鏡像,構建出來鏡像的體積相對比較大
而Go程序制作出的鏡像就不需要安裝任何的依賴環境,因為他在打包的時候就已經將依賴的包一塊打包到一起了
拿著這個鏡像就可以到處運行了。
通過對比我們可以發現,如果沒有之前的技術和業務的積累,重新開發一個新的項目,使用go去開發無疑是最容易上手的,所以現在很多公司都使用go進行開發,也逐漸將其他語言的項目逐步的用go語言進行改造。其實用什么語言不重要,合適的才重要,開發項目在選擇語言的時候也會綜合多方面來考慮選擇合適的語言和架構,畢竟很多公司都不是搞研究的,都需要項目來賺錢,所以開發的速度、客戶的滿意度、項目交付的時間才是驅動公司技術的主要因素。
我們個人也應該不斷完善自己的技術棧,不應該太依靠某種語言,最重要的還是自己的架構思想和底層架構知識,只有掌握了這些才能夠不被 社會 和公司“優化”。
Fyne 是一個 Go 語言開發的易用的 UI工具包,提供基于 OpenGL 的跨平臺圖形界面應用開發支持。
示例代碼:
示例效果:
完整的工具包:
淺色主題:
點擊下方鏈接,獲取軟件下載地址↓↓↓
Fyne首頁、文檔和下載 - Go 的 GUI 框架開發包 - 開源中國
我簡單的做了對比 最后決定使用govcl ,相比較walk,ui。govcl 庫示例多,可以部分做到跨平臺。windows,mac,linux等。看官可以根據自己的實際情況選擇。
LiteIDE是一款專門為Go語言開發的跨平臺輕量級集成開發環境(IDE),由QT編寫。
LiteIDE主要特點: 支持主流操作系統
Windows
Linux
MacOS X Go編譯環境管理和切換
管理和切換多個Go編譯環境
支持Go語言交叉編譯 與Go標準一致的項目管理方式
基于GOPATH的包瀏覽器
基于GOPATH的編譯系統
基于GOPATH的Api文檔檢索 Go語言的編輯支持
類瀏覽器和大綱顯示
Gocode(代碼自動完成工具)的完美支持
Go語言文檔查看和Api快速檢索
代碼表達式信息顯示F1
源代碼定義跳轉支持F2
Gdb斷點和調試支持
gofmt自動格式化支持 其他特征
支持多國語言界面顯示
完全插件體系結構
支持編輯器配色方案
基于Kate的語法顯示支持
基于全文的單詞自動完成
支持鍵盤快捷鍵綁定方案
Markdown文檔編輯支持
實時預覽和同步顯示
自定義CSS顯示
可導出HTML和PDF文檔
批量轉換/合并為HTML/PDF文檔 Sublime Text 2(以下簡稱Sublime)+ GoSublime + gocode + MarGo的組合。
其優點有: 自動化提示代碼。 保存的時候自動格式化代碼,讓您編寫的代碼更加美觀,符合Go的標準。 支持項目管理 支持語法高亮 熟悉Java的讀者應該對于idea不陌生,idea是通過一個插件來支持go語言的高亮語法,代碼提示和重構實現。
新聞標題:go語言跨平臺ui go 跨平臺
分享路徑:http://m.kartarina.com/article12/hgsjdc.html
成都網站建設公司_創新互聯,為您提供ChatGPT、域名注冊、、服務器托管、App設計、網站設計公司
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯