新聞中心
開(kāi)發(fā)速度快
沒(méi)有java那么復(fù)雜的定義類(lèi)、子類(lèi)、各種 get 、set 方法。go 里面幾乎沒(méi)有多余的代碼,很少的代碼就可以完成很復(fù)雜的功能。Rust 則是各種編譯報(bào)錯(cuò),對(duì)于初學(xué)者非常不友好。Go里面各種接口的抽象非常簡(jiǎn)潔,尤其是網(wǎng)絡(luò)包的抽象。你可以感覺(jué)到你編寫(xiě)的代碼和Go庫(kù)函數(shù)的代碼高度一致,這點(diǎn)很少有語(yǔ)言能做到。

如果你還不相信,下面main里面的三行代碼就可以啟動(dòng)一個(gè)文件服務(wù)器。你還有什么理由不用Go。
- func main() {
- router := httprouter.New()
- router.NotFound = http.FileServer(http.Dir("data"))
- _ = http.ListenAndServe(":80", router)
- }
靜態(tài)編譯
能夠跨平臺(tái)靜態(tài)編譯,在mac 上開(kāi)發(fā),然后編譯出linux 二進(jìn)制。這極大地提高了開(kāi)發(fā)效率。關(guān)鍵是編譯后的二進(jìn)制也非常小,之前網(wǎng)上有測(cè)評(píng),相同的一個(gè)函數(shù) Go 編譯完是3M ,而C# 則需要40M。
沒(méi)有JVM,速度快
沒(méi)有java的虛擬機(jī)的依賴(lài),讓部署變得更加簡(jiǎn)單。而且Go 比Python 速度要快。
Go routines
沒(méi)有哪門(mén)語(yǔ)言的并發(fā)能夠像Go 一樣簡(jiǎn)單,一個(gè)關(guān)鍵字 go 就可以啟動(dòng)一個(gè)協(xié)程。rust 里面的異步多線程 + 生命周期管理 能干翻一波程序猿。java 里面則是玩各種線程池,實(shí)現(xiàn)runnable接口或者集成Thread 類(lèi),都比較復(fù)雜。
云原生語(yǔ)言
云原生這個(gè)詞已經(jīng)火到不行了,云原生將會(huì)徹底改變軟件的開(kāi)發(fā)和交付方式。而云原生大部分項(xiàng)目都是采用Go語(yǔ)言,比如docker、k8s、harbor等,可以想象,Go開(kāi)發(fā)者的待遇不會(huì)差!
吐槽
但寫(xiě)了多年的Go,最讓我感覺(jué)Go設(shè)計(jì)得不太好的地方就是錯(cuò)誤處理
隨處可見(jiàn)下面的錯(cuò)誤處理,造成大量的代碼冗余,個(gè)人更加喜歡 Java 的try catch。
- if err != nil {
- return val, err
- }
本文名稱(chēng):你應(yīng)該學(xué)Go的五個(gè)理由
網(wǎng)站鏈接:http://www.5511xx.com/article/dpsgcip.html


咨詢(xún)
建站咨詢(xún)
