go語言的缺點:1、技術(shù)路線選擇導(dǎo)致的“性能劣勢”,go屬于GC類編程語言,在一些性能超級敏感的場合,選擇Go依然要慎重。2、表達(dá)方法單一”、顯式的錯誤處理有點“過時”。3、最小版本選擇MVS,背離主流。4、Go核心團隊對語言演化的把控力十足,不是社區(qū)多數(shù)人贊同的就一定會被采納而加入Go語言,導(dǎo)致在社區(qū)上有劣勢,Go社區(qū)與Go核心團隊有“裂痕”。5、功能孱弱。
本教程操作環(huán)境:windows7系統(tǒng)、GO 1.18版本、Dell G3電腦。
每種編程語言都有自己的優(yōu)勢和劣勢,Go也不例外,下面我們就來列舉一下Go的那些“優(yōu)勢”和“劣勢”:
Go優(yōu)勢
1、簡單易學(xué)
Go語言語法簡單,其中包含了類似C語言的語法。如果讀者已經(jīng)掌握了兩到三門編程語言,那么學(xué)習(xí)Go語言只需要幾天的時間。即使是一名剛?cè)腴T的開發(fā)者,花幾個星期也能寫出性能較高的Go語言程序。
2、自由高效
Go語言的編譯速度明顯優(yōu)于 Java 和 C++,還擁有接近C語言的運行效率以及接近 PHP 的開發(fā)效率,可以說Go語言將運行效率和開發(fā)效率進(jìn)行了完美的融合。
同時,Go語言還支持當(dāng)前所有的編程范式,包括過程式編程、面向?qū)ο缶幊?、面向接口編程、函?shù)式編程。開發(fā)者們可根據(jù)需求自由組合。
3、強大的標(biāo)準(zhǔn)庫
Go里面的標(biāo)準(zhǔn)庫非常穩(wěn)定并且豐富多樣,包括網(wǎng)絡(luò)、系統(tǒng)、加密、編碼、圖形等各個方面。尤其是網(wǎng)絡(luò)和系統(tǒng)的庫非常實用,使得開發(fā)者在開發(fā)大型程序時,幾乎無須依賴第三方庫。
4、部署方便
不需要使用虛擬機,Go語言的代碼可以直接輸出為二進(jìn)制可執(zhí)行文件。而且Go語言擁有自己的鏈接器,不依賴任何系統(tǒng)提供的編譯器和鏈接器。因此編譯出的二進(jìn)制可執(zhí)行文件幾乎可以運行在任何系統(tǒng)環(huán)境中。
5、原生支持并發(fā)
Go語言是一種非常高效的語言,從語言層原生支持并發(fā),使用起來非常簡單。Go語言的并發(fā)是基于 Goroutine 的,Goroutine 類似于線程,但并非線程,是Go語言面向線程的輕量級方法。創(chuàng)建 Goroutine 的成本很低,只需幾千個字節(jié)的額外內(nèi)存。
通常一臺普通的桌面主機運行上百個線程就會負(fù)載過大,而同樣的主機卻可以運行上千甚至上萬個 Goroutine。Goroutine 之間可以通過 channel 實現(xiàn)通信。Goroutine 以及基于 channel 的并發(fā)性方法可最大限度地使用 CPU 資源。
6、穩(wěn)定性強
Go語言擁有強大的編譯檢查、嚴(yán)格的編碼規(guī)范和很強的穩(wěn)定性,此外Go語言還提供了軟件生命周期(如開發(fā)、測試、部署、維護等)的各個環(huán)節(jié)的工具,例如:go tool、go fmt、go test 等。
7、垃圾回收
在使用Go語言進(jìn)行開發(fā)時,在內(nèi)存方面開發(fā)者只需要關(guān)注內(nèi)存的申請即可,并不需要關(guān)系內(nèi)存的釋放,因為Go語言內(nèi)置了 runtime 來自動進(jìn)行管理。雖然目前來說 GC(Garbage Collection,垃圾回收機制)不算完美,但是足以應(yīng)付開發(fā)時遇到的大多數(shù)情況,使開發(fā)者可以將