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