摘要:目錄結(jié)構(gòu)說(shuō)明集多編程范式之大成者,使開(kāi)發(fā)者能夠快速的開(kāi)發(fā)測(cè)試部署程序,支持全平臺(tái)靜態(tài)編譯。上目錄位置主要目錄包含如下圖,分別進(jìn)行說(shuō)明文件夾存放檢查器的輔助文件。工作區(qū)有個(gè)子目錄目錄目錄和目錄。目錄用于以代碼包的形式組織并保存源碼文件。
go 目錄結(jié)構(gòu)說(shuō)明
??golang集多編程范式之大成者,使開(kāi)發(fā)者能夠快速的開(kāi)發(fā)、測(cè)試、部署程序,支持全平臺(tái)靜態(tài)編譯。go具有優(yōu)秀的依賴(lài)管理,高效的運(yùn)行效率,龐大的第三方庫(kù)支持以及在國(guó)內(nèi)持續(xù)的增長(zhǎng)勢(shì)頭。
??作為開(kāi)發(fā)者的我們也將不得不重視這門(mén)語(yǔ)言的興起。首先向大家講解一下go語(yǔ)言開(kāi)發(fā)環(huán)境的目錄結(jié)構(gòu),讓我們更清楚的認(rèn)識(shí)它。
當(dāng)我們安裝好后,會(huì)在安裝目錄出現(xiàn)一個(gè)go/文件夾,如果是windows目錄應(yīng)在再C:/go下(默認(rèn)),如果是unix/linux一般會(huì)在/usr/local/go下,這個(gè)目錄是unix software resource的含義。
# liunx上目錄位置 chao@chao-PC:/usr/local/go$ pwd /usr/local/go # 主要目錄包含如下圖,分別進(jìn)行說(shuō)明:1、api文件夾
存放Go API檢查器的輔助文件。其中,go1.1.txt、go1.2.txt、go1.3.txt和go1.txt文件分別羅列了不同版本的Go語(yǔ)言的全部API特征;except.txt文件中羅列了一些(在不破壞兼容性的前提下)可能會(huì)消失的API特性;next.txt文件則列出了可能在下一個(gè)版本中添加的新API特性。2、bin文件夾
存放所有由官方提供的Go語(yǔ)言相關(guān)工具的可執(zhí)行文件。默認(rèn)情況下,該目錄會(huì)包含go和gofmt這兩個(gè)工具。3、doc文件夾
存放Go語(yǔ)言幾乎全部的HTML格式的官方文檔和說(shuō)明,方便開(kāi)發(fā)者在離線時(shí)查看。4、misc文件夾
存放各類(lèi)編輯器或IDE(集成開(kāi)發(fā)環(huán)境)軟件的插件,輔助它們查看和編寫(xiě)Go代碼。有經(jīng)驗(yàn)的軟件開(kāi)發(fā)者定會(huì)在該文件夾中看到很多熟悉的工具。
查看:
chao@chao-PC:/usr/local/go/misc$ ls android benchcmp chrome git linkcheck sortac tour arm cgo editors ios nacl swig trace5、pkg文件夾
??用于在構(gòu)建安裝后,保存Go語(yǔ)言標(biāo)準(zhǔn)庫(kù)的所有歸檔文件。pkg文件夾包含一個(gè)與Go安裝平臺(tái)相關(guān)的子目錄,我們稱(chēng)之為“平臺(tái)相關(guān)目錄”。例如,在針對(duì)Linux 32bit操作系統(tǒng)的二進(jìn)制安裝包中,平臺(tái)相關(guān)目錄的名字就是linux_386;而在針對(duì)Windows 64bit操作系統(tǒng)的安裝包中,平臺(tái)相關(guān)目錄的名字則為windows_amd64。
??Go源碼文件對(duì)應(yīng)于以“.a”為結(jié)尾的歸檔文件,它們就存儲(chǔ)在pkg文件夾下的平臺(tái)相關(guān)目錄中。
??值得一提的是,pkg文件夾下有一個(gè)名叫tool的子文件夾,該子文件夾下也有一個(gè)平臺(tái)相關(guān)目錄,其中存放了很多可執(zhí)行文件。關(guān)于這些可執(zhí)行文件的用途,讀者可參見(jiàn)附屬于本書(shū)的Go命令教程。
查看:
chao@chao-PC:/usr/local/go/pkg$ ls include linux_amd64_dynlink linux_amd64_shared tool linux_amd64 linux_amd64_race linux_amd64_testcshared_shared6、src文件夾
存放所有標(biāo)準(zhǔn)庫(kù)、Go語(yǔ)言工具,以及相關(guān)底層庫(kù)(C語(yǔ)言實(shí)現(xiàn))的源碼。通過(guò)查看這個(gè)文件夾,可以了解到Go語(yǔ)言的方方面面。
查看:
chao@chao-PC:/usr/local/go/src$ ls all.bash clean.bat errors iostest.bash os sort all.bat clean.rc expvar log path strconv all.rc cmd flag make.bash plugin strings androidtest.bash cmp.bash fmt make.bat race.bash sync archive compress go Make.dist race.bat syscall bootstrap.bash container hash make.rc reflect testing bufio context html math regexp text buildall.bash crypto image mime run.bash time builtin database index naclmake.bash run.bat unicode bytes debug internal nacltest.bash run.rc unsafe clean.bash encoding io net runtime vendor7、test文件夾
存放測(cè)試Go語(yǔ)言自身代碼的文件。通過(guò)閱讀這些測(cè)試文件,可大致了解Go語(yǔ)言的一些特性和使用方法。二、gopath工作區(qū)目錄結(jié)構(gòu)
??在環(huán)境變量中除了$GOPATH這樣的顯式變量外,Go語(yǔ)言還有兩個(gè)隱含的環(huán)境變量——GOOS和GOARCH。
??GOOS代表程序構(gòu)建環(huán)境的目標(biāo)操作系統(tǒng),可籠統(tǒng)地理解為Go語(yǔ)言安裝到的那個(gè)操作系統(tǒng)的標(biāo)識(shí),其值可以是darwin、freebsd、linux或windows。
??GOARCH則代表程序構(gòu)建環(huán)境的目標(biāo)計(jì)算架構(gòu),可籠統(tǒng)地理解為Go語(yǔ)言安裝到的那臺(tái)計(jì)算機(jī)的計(jì)算架構(gòu)的標(biāo)識(shí),其值可以是386、amd64或arm。
工作區(qū)有3個(gè)子目錄:src目錄、pkg目錄和bin目錄。1、src目錄
用于以代碼包的形式組織并保存Go源碼文件。這里的代碼包,與src下的子目錄一一對(duì)應(yīng)。例如,若一個(gè)源碼文件被聲明為屬于代碼包logging,那么它就應(yīng)當(dāng)被保存在src目錄下名為logging的子目錄中。當(dāng)然,我們也可以把Go源碼文件直接放于src目錄下,但這樣的Go源碼文件就只能被聲明為屬于main代碼包了。除非用于臨時(shí)測(cè)試或演示,一般還是建議把Go源碼文件放入特定的代碼包中。
Go語(yǔ)言的源碼文件分為3類(lèi):Go庫(kù)源碼文件、Go命令源碼文件和Go測(cè)試源碼文件。2、pkg目錄
用于存放經(jīng)由go install命令構(gòu)建安裝后的代碼包(包含Go庫(kù)源碼文件)的“.a”歸檔文件。該目錄與GOROOT目錄下的pkg功能類(lèi)似。區(qū)別在于,工作區(qū)中的pkg目錄專(zhuān)門(mén)用來(lái)存放用戶(hù)(也就是程序開(kāi)發(fā)者)代碼的歸檔文件。構(gòu)建和安裝用戶(hù)源碼的過(guò)程一般會(huì)以代碼包為單位進(jìn)行,比如logging包被編譯安裝后,將生成一個(gè)名為logging.a的歸檔文件,并存放在當(dāng)前工作區(qū)的pkg目錄下的平臺(tái)相關(guān)目錄中。3、bin目錄
與pkg目錄類(lèi)似,在通過(guò)go install命令完成安裝后,保存由Go命令源碼文件生成的可執(zhí)行文件。在Linux操作系統(tǒng)下,這個(gè)可執(zhí)行文件一般是一個(gè)與源碼文件同名的文件。而在Windows操作系統(tǒng)下,這個(gè)可執(zhí)行文件的名稱(chēng)是源碼文件名稱(chēng)加.exe后綴。
注意: 這里有必要明確一下Go語(yǔ)言的命令源碼文件和庫(kù)源碼文件的區(qū)別。所謂命令源碼文件,就是聲明為屬于main代碼包,并且包含無(wú)參數(shù)聲明和結(jié)果聲明的main函數(shù)的源碼文件。三、go編譯時(shí),目錄查找順序
這類(lèi)源碼文件可以獨(dú)立運(yùn)行(使用go run命令),也可被go build或go install命令轉(zhuǎn)換為可執(zhí)行文件。而庫(kù)源碼文件則是指存在于某個(gè)代碼包中的普通源碼文件。
go工程包含依賴(lài)包管理,GOROOT,GOPATH三類(lèi)目錄來(lái)查找編譯需要的庫(kù)。他們的順序如下:
從工程項(xiàng)目的root目錄查找vendor目錄中的依賴(lài)庫(kù)。
從用戶(hù)環(huán)境變量$GOPATH/src中查找依賴(lài)庫(kù)。
從用戶(hù)環(huán)境變量$GOROOT/src中查找依賴(lài)庫(kù)。
未找到,拋出異常,編譯終止。
總結(jié):通過(guò)對(duì)golang的目錄結(jié)構(gòu)的了解和編譯時(shí)查找依賴(lài)庫(kù)的順序,對(duì)這門(mén)語(yǔ)言有一個(gè)初步的認(rèn)識(shí),接下來(lái)我們將通過(guò)go的內(nèi)部命令深入了解一下它。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27691.html
摘要:小白前端一枚,最近在研究,記錄自己學(xué)習(xí)過(guò)程中的一些筆記,以及自己的理解。此外,結(jié)構(gòu)體也支持嵌套。在函數(shù)聲明時(shí),在函數(shù)名前放上一個(gè)變量,這個(gè)變量稱(chēng)為方法的接收器,一般是結(jié)構(gòu)體類(lèi)型的。 小白前端一枚,最近在研究golang,記錄自己學(xué)習(xí)過(guò)程中的一些筆記,以及自己的理解。 go中包的依賴(lài)管理 go中的切片 byte 和 string go中的Map go中的struct結(jié)構(gòu)體 go中的方...
摘要:將應(yīng)用部署到項(xiàng)目地址快上車(chē),支持一波原文地址注開(kāi)始前你需要安裝好,配好鏡像源本章節(jié)源碼在分支上從本章節(jié)開(kāi)始項(xiàng)目目錄都以為基準(zhǔn)請(qǐng)配合自己本地項(xiàng)目靈活變動(dòng)介紹在這里簡(jiǎn)單介紹下,建議深入學(xué)習(xí)是一個(gè)開(kāi)源的輕量級(jí)容器技術(shù),讓開(kāi)發(fā)者可以打包他們 將Golang應(yīng)用部署到Docker 項(xiàng)目地址:https://github.com/EDDYCJY/go... (快上車(chē),支持一波)原文地址:https...
摘要:將應(yīng)用部署到項(xiàng)目地址快上車(chē),支持一波原文地址注開(kāi)始前你需要安裝好,配好鏡像源本章節(jié)源碼在分支上從本章節(jié)開(kāi)始項(xiàng)目目錄都以為基準(zhǔn)請(qǐng)配合自己本地項(xiàng)目靈活變動(dòng)介紹在這里簡(jiǎn)單介紹下,建議深入學(xué)習(xí)是一個(gè)開(kāi)源的輕量級(jí)容器技術(shù),讓開(kāi)發(fā)者可以打包他們 將Golang應(yīng)用部署到Docker 項(xiàng)目地址:https://github.com/EDDYCJY/go... (快上車(chē),支持一波)原文地址:https...
摘要:交叉編譯項(xiàng)目地址快上車(chē),支持一波原文地址前言在連載九講解構(gòu)建鏡像時(shí),我們編譯可執(zhí)行文件用了另外一個(gè)形式的命令,不知道你有沒(méi)有疑問(wèn)說(shuō)明我們將講解命令各個(gè)參數(shù)的作用,希望你在閱讀時(shí),將每一項(xiàng)串聯(lián)起來(lái),你會(huì)發(fā)現(xiàn)這就是交叉編譯相關(guān)的小知識(shí) Golang交叉編譯 項(xiàng)目地址:https://github.com/EDDYCJY/go... (快上車(chē),支持一波) 原文地址:https://segme...
閱讀 3243·2021-11-23 09:51
閱讀 2498·2021-09-27 13:34
閱讀 2482·2021-09-08 09:45
閱讀 678·2019-08-30 15:44
閱讀 3506·2019-08-29 12:17
閱讀 2771·2019-08-26 12:18
閱讀 2637·2019-08-26 10:10
閱讀 3090·2019-08-23 18:02