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