Go語(yǔ)言 更多關(guān)于Go的知識(shí)

2023-02-16 17:40 更新

《Go語(yǔ)言101》中的系列文章主要著墨于Go語(yǔ)法和語(yǔ)義。 更多和Go相關(guān)的話(huà)題并沒(méi)有在《Go語(yǔ)言101》中詳盡解釋。 本文將對(duì)這些話(huà)題做一個(gè)簡(jiǎn)單的介紹,并提供一些鏈接供讀者自行探索。

程序性能分析、基準(zhǔn)測(cè)試、單元測(cè)試和模糊測(cè)試

我們可以使用Go官方工具鏈中的go test命令來(lái)運(yùn)行單元測(cè)試和基準(zhǔn)測(cè)試。 測(cè)試源文件名必須以_test.go結(jié)尾。 Go官方工具鏈也支持程序性能分析。 請(qǐng)閱讀下列文章獲取詳情:

gccgo

gccgo是Go核心團(tuán)隊(duì)維護(hù)開(kāi)發(fā)的另一款Go編譯器。 它的主要目的是為了驗(yàn)證標(biāo)準(zhǔn)編譯器(gc)的正確性。 我們可以在go run、go buildgo install等命令中使用選項(xiàng)-compiler=gccgo來(lái)指定使用gccgo編譯器。 此選項(xiàng)需要安裝gccgo軟件包才能起作用。 gccgo命令也可單獨(dú)運(yùn)行

go/*標(biāo)準(zhǔn)庫(kù)包

go/*標(biāo)準(zhǔn)庫(kù)包提供Go源文件解析相關(guān)的功能。這些庫(kù)包對(duì)于開(kāi)發(fā)各種Go源代碼分析工具很有幫助。 請(qǐng)閱讀Go代碼分析這些庫(kù)包的文檔來(lái)獲取如何使用這些庫(kù)包中提供的功能。

系統(tǒng)調(diào)用

我們可以使用syscall標(biāo)準(zhǔn)庫(kù)包中的函數(shù)來(lái)進(jìn)行系統(tǒng)調(diào)用。 注意此標(biāo)準(zhǔn)庫(kù)包和其它標(biāo)準(zhǔn)庫(kù)包不同,它其中的函數(shù)是和具體操作系統(tǒng)相關(guān)的。

Go匯編

Go函數(shù)可以使用Go匯編語(yǔ)言來(lái)編寫(xiě)。Go匯編是一種跨平臺(tái)(盡管并非100%)的匯編語(yǔ)言。 Go匯編匯編常用來(lái)實(shí)現(xiàn)一些對(duì)性能要求很高的函數(shù)。

更多詳情,請(qǐng)閱讀下列文章:

cgo

通過(guò)cgo機(jī)制,我們可以在Go代碼中調(diào)用C代碼,或者反之。 請(qǐng)閱讀下列鏈接獲取詳情:

通過(guò)C代碼做為橋梁,我們也可以使C++和Go代碼能夠相互調(diào)用。

注意,cgo的使用將給跨平臺(tái)Go項(xiàng)目的維護(hù)開(kāi)發(fā)帶來(lái)一些麻煩。另外Go和C之間互調(diào)不如Go-Go和C-C調(diào)用高效。

跨平臺(tái)編譯

標(biāo)準(zhǔn)Go編譯器支持跨平臺(tái)編譯。通過(guò)設(shè)置GOOSGOARCH兩個(gè)環(huán)境變量,我們可以使用go build命令在Linux系統(tǒng)中編譯出Windows和Mac程序,反之亦然。 請(qǐng)閱讀下面的代碼獲取詳情:

特別地,自從G0 1.11,標(biāo)準(zhǔn)Go編譯器開(kāi)始支持WebAssembly做為一種新的架構(gòu)。請(qǐng)閱讀此篇維基文章獲取詳情。

編譯器指示(compiler directive)

標(biāo)準(zhǔn)Go編譯器支持若干編譯器指示。 一個(gè)編譯器指示以注釋的形式//go:DirectiveName args出現(xiàn)。 比如我們可以使用go:generate編譯器指示來(lái)生成代碼; 或者使用Go 1.16版本引入go:embed編譯器指示來(lái)內(nèi)嵌數(shù)據(jù)文件。

構(gòu)建編譯約束/標(biāo)簽(build constraint/tag)

我們可以使用構(gòu)建編譯約束(或稱(chēng)標(biāo)簽)來(lái)讓編譯器選擇性地忽略某些源文件。 選擇標(biāo)簽可以出現(xiàn)在源代碼文件中的最頂部,也可以出現(xiàn)在源代碼文件名(不包含.go后綴)的結(jié)尾(并用下劃線(xiàn)分隔開(kāi)來(lái))。 注意:Go官方工具鏈1.17引入的新的//go:build指示將逐漸替代// +build構(gòu)建編譯約束。

更多的編譯模式(build mode)

Go官方工具鏈中的go build命令支持更多的編譯模式。 運(yùn)行go help buildmode可以列出所有支持的模式,或者查看官方文檔來(lái)查看這些模式的解釋說(shuō)明。 除了最常用的default模式,plugin(插件)模式可能是另一種用的較多的模式。 我們可以使用plugin標(biāo)準(zhǔn)庫(kù)包中的函數(shù)來(lái)加載和使用Go插件。


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)