掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
一般的編程語言往往對工程(項(xiàng)目)的目錄結(jié)構(gòu)是沒有什么規(guī)定的,但是Go語言卻在這方面做了相關(guān)規(guī)定,本節(jié)我們就來聊聊Go語言在工程結(jié)構(gòu)方面的有關(guān)知識。

創(chuàng)新互聯(lián)公司是一家專業(yè)提供蕭縣企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、HTML5、小程序制作等業(yè)務(wù)。10年已為蕭縣眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
我們前面講搭建Go語言開發(fā)環(huán)境時(shí)提到的環(huán)境變量 GOPATH,項(xiàng)目的構(gòu)建主要是靠它來實(shí)現(xiàn)的。這么說吧,如果想要構(gòu)建一個(gè)項(xiàng)目,就需要將這個(gè)項(xiàng)目的目錄添加到 GOPATH 中,多個(gè)項(xiàng)目之間可以使用
;分隔。
如果不配置 GOPATH,即使處于同一目錄,代碼之間也無法通過絕對路徑相互調(diào)用。
一個(gè)Go語言項(xiàng)目的目錄一般包含以下三個(gè)子目錄:
三個(gè)目錄中我們需要重點(diǎn)關(guān)注的是 src 目錄,其他兩個(gè)目錄了解即可,下面來分別介紹一下這三個(gè)目錄。
用于以包(package)的形式組織并存放 Go 源文件,這里的包與 src 下的每個(gè)子目錄是一一對應(yīng)。例如,若一個(gè)源文件被聲明屬于 log 包,那么它就應(yīng)當(dāng)保存在 src/log 目錄中。
并不是說 src 目錄下不能存放 Go 源文件,一般在測試或演示的時(shí)候也可以把 Go 源文件直接放在 src 目錄下,但是這么做的話就只能聲明該源文件屬于 main 包了。正常開發(fā)中還是建議大家把 Go 源文件放入特定的目錄中。
包是Go語言管理代碼的重要機(jī)制,其作用類似于 Java中的 package 和 C/ C++ 的頭文件。Go 源文件中第一段有效代碼必須是
package <包名> 的形式,如 package hello。
另外需要注意的是,Go語言會把通過
go get 命令獲取到的庫源文件下載到 src 目錄下對應(yīng)的文件夾當(dāng)中。
用于存放通過
go install 命令安裝某個(gè)包后的歸檔文件。歸檔文件是指那些名稱以“.a”結(jié)尾的文件。
該目錄與 GOROOT 目錄(也就是Go語言的安裝目錄)下的 pkg 目錄功能類似,區(qū)別在于這里的 pkg 目錄專門用來存放項(xiàng)目代碼的歸檔文件。
編譯和安裝項(xiàng)目代碼的過程一般會以代碼包為單位進(jìn)行,比如 log 包被編譯安裝后,將生成一個(gè)名為 log.a 的歸檔文件,并存放在當(dāng)前項(xiàng)目的 pkg 目錄下。
與 pkg 目錄類似,在通過
go install 命令完成安裝后,保存由 Go 命令源文件生成的可執(zhí)行文件。在類 Unix 操作系統(tǒng)下,這個(gè)可執(zhí)行文件的名稱與命令源文件的文件名相同。而在 Windows 操作系統(tǒng)下,這個(gè)可執(zhí)行文件的名稱則是命令源文件的文件名加 .exe 后綴。
上面我們提到了命令源文件和庫源文件,它們到底是什么呢?
go run 命令運(yùn)行或者通過go build 命令生成可執(zhí)行文件。不管是命令源文件還是庫源文件,在同一個(gè)目錄下的所有源文件,其所屬包的名稱必須一致的。

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流