W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Go是一門編譯型的和靜態(tài)的編程語言。 Go誕生于谷歌研究院。 Go的核心設(shè)計成員中包括很多有著數(shù)十年編程語言研究領(lǐng)域經(jīng)驗的研究者。
Go有很多特性,有一些是獨特的,有一些借鑒于一些其它編程語言:
除了以上特性,Go還有如下亮點:
Go程序員常常被稱為地鼠(gopher)。
上面已經(jīng)提到,Go屬于編譯型的靜態(tài)語言。但是Go的很多特性使得用Go編程像使用動態(tài)腳本語言一樣的靈活。 一般很難將靜態(tài)語言的嚴格性和動態(tài)語言靈活性的優(yōu)點合二為一。但是Go做到了這一點。 當然,合二為一也會不可避免地帶來一些弊端。 但是,對于Go來說,合二為一帶來的好處遠多于合二為一的帶來的弊端。
可讀性是在Go語言的設(shè)計中一個非常重要的考慮因素。 一個Go程序員常常可以輕松讀懂其他Go程序員寫的代碼。 甚至對于一個沒有Go編程經(jīng)驗但具有其它語言編程經(jīng)驗的程序員來說,讀懂一份Go源碼也不是一件難事。
目前,使用最廣泛的Go編譯器由Go官方設(shè)計和開發(fā)團隊維護。 以后我們將稱此編譯器為標準編譯器。標準編譯器也常常稱為gc
(是Go compiler的縮寫,不是垃圾回收garbage collection的縮寫)。 Go官方設(shè)計和開發(fā)團隊也維護著另外一個編譯器,gccgo
。 gccgo
是gcc編譯器項目的一個子項目。 gccgo
的使用廣泛度大不如gc
, 它的主要作用是做為一個參考,來保證gc
的實現(xiàn)正確性。 目前兩個編譯器的開發(fā)都很活躍,盡管Go開發(fā)團隊在gc
的開發(fā)上花費的精力更多。
gc
編譯器是Go官方工具鏈中一個組件。 Go官方工具鏈的使用將在下一篇文章中介紹。 Go官方工具鏈1.0發(fā)布于2012年三月。 Go語言規(guī)范的最新版本和Go官方工具鏈的最新版本總是保持一致。 每年Go官方工具鏈發(fā)行兩個主版本。
自從Go語言正式發(fā)布后,Go的語法變化很小。 但是標準編譯器gc
卻在不斷地改進。 使用早期的gc
編譯的程序在運行的時候在每次垃圾回收的結(jié)尾常常會有明顯的停頓。 但是自從Go 1.8,使用gc
編譯的程序在運行時刻已經(jīng)基本消除了停頓現(xiàn)象。
gc
支持跨平臺編譯。 比如,我們可以在Linux平臺上編譯出Windows程序,反之亦然。
使用Go編寫的程序常常編譯得非常快。 編譯時間的長短是開發(fā)愉悅度的一個重要因素。 編譯時間短是很多程序員喜歡Go的一個原因。
Go程序生成的二進制可執(zhí)行文件常常擁有以下優(yōu)點:
很多C家族語言,比如C/C++/Rust等,也擁有上述的優(yōu)點。 但它們?nèi)鄙貵o語言的幾個重要優(yōu)點:
上面所有提到的優(yōu)點使得Go成為一個出眾的編程語言。 對于很多項目來說,Go是一個相當不錯的選擇。 目前,Go主要用于網(wǎng)絡(luò)開發(fā)、系統(tǒng)工具開發(fā)、數(shù)據(jù)庫開發(fā)和區(qū)塊鏈開發(fā)。 隨著從Go 1.18開始支持自定義泛型,預期Go會在更多開發(fā)領(lǐng)域流行起來,比如圖形界面、游戲、大數(shù)據(jù)和人工智能等。
最后,我們應(yīng)該知道,沒有一門語言是完美的。Go也一樣。Go的設(shè)計中有很多折衷和各種權(quán)衡。Go 1確實有一些不足。 比如,目前Go不支持任意類型的不變量。這導致很多標準庫中一些希望永不被更改的值目前被聲明為變量。這是Go程序中的一個潛在安全隱患。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: