Go語(yǔ)言入門(二) 后臺(tái)開發(fā):依賴庫(kù)的安裝

創(chuàng)建日期: 2021年8月5日
環(huán)境參數(shù): go version:v1.16.7
參考鏈接:
Go 語(yǔ)言語(yǔ)法快速入門
Go 語(yǔ)言編碼規(guī)范
項(xiàng)目整體結(jié)構(gòu)介紹
準(zhǔn)備項(xiàng)目所需的 Go 類包
go mod使用

說(shuō)明:
在開始本章之前,先按照項(xiàng)目整體結(jié)構(gòu)介紹,新建出所需要文件夾和文件庆聘。
筆者是初學(xué)者燥透,僅供個(gè)人做個(gè)記錄栗弟。有搞錯(cuò)了的地方悍手,請(qǐng)大神指正??渴逻。

1. 依賴管理Go Modules

如果你的go的版本妙啃,是v1.11以上档泽,則無(wú)需安裝。
依賴管理工具的演變歷史揖赴,看這里馆匿。
之前,有文章推薦dep燥滑,也是包管理工具渐北,隨著golang自身的完善,現(xiàn)在主流是推薦使用golang官網(wǎng)推薦的Go Moudle铭拧。

1.1 操作

在你的項(xiàng)目文件夾下赃蛛,運(yùn)行下面命令恃锉,之后,會(huì)生成go.mod文件呕臂。

# awesomeProject 可以省略破托,也可以自定義。省略時(shí)歧蒋,默認(rèn)為文件夾名土砂,即項(xiàng)目名。
go mod init awesomeProject

運(yùn)行上面命令后谜洽,看到如下提示:

go: creating new go.mod: module awesomeProject
go: to add module requirements and sums:
go mod tidy

如果萝映,我們省略命令中的module名awesomeProject部分,則不會(huì)出現(xiàn)上面的提示阐虚。關(guān)于go mod tidy命令序臂,我們之后再說(shuō),這里先無(wú)視敌呈。
現(xiàn)在贸宏,可以看到文件夾下造寝,出現(xiàn)了自動(dòng)生成的go.mod文件磕洪,默認(rèn)內(nèi)容如下:

module awesomeProject

go 1.16

1.2 配置

查看配置:

# Terminal上執(zhí)行該命令,可以看到配置信息
go env

結(jié)果:

// 配置信息:
GO111MODULE=""
GOARCH="amd64"
// ...省略

(之前糾結(jié)的GOPATH也可以在配置中诫龙,看到路徑了析显。)

修改配置
因?yàn)榫W(wǎng)絡(luò)環(huán)境不同,國(guó)內(nèi)貌似還需要配置代理签赃。(參考go mod使用

# 例子:開啟Go Moudles模式的命令
go env -w GO111MODULE=on

修改后谷异,我們?cè)偻ㄟ^(guò)go env命令查看當(dāng)前配置,如下:

GO111MODULE="on"
GOARCH="amd64"
// ...省略

這篇文章中锦聊,對(duì)GO111MODULE的設(shè)置歹嘹,有如下定義:

GO111MODULE 意義
on go命令行將不會(huì)支持module功能,尋找依賴包的方式將會(huì)沿用舊版本那種通過(guò)vendor目錄或者GOPATH模式來(lái)查找孔庭。
off go命令行會(huì)使用modules尺上,而一點(diǎn)也不會(huì)去GOPATH/src目錄下查找。 (pkg 包都存放在 $GOPATH/pkg 下)
auto 默認(rèn)值圆到,go命令行將會(huì)根據(jù)當(dāng)前目錄來(lái)決定是否啟用module功能怎抛。(pkg 包都存放在 $GOPATH/pkg 下)

GO111MODULE="on",意味著,我們已經(jīng)開啟了Go Moudles模式芽淡,可以自動(dòng)下載安裝依賴了马绝。

??至此,包管理工具部分挣菲,告一段落富稻。下面掷邦,我們用Go Modules安裝所需要的庫(kù)。


2. 小試牛刀–––利用Go Moudles安裝庫(kù)

2.1 操作

一般安裝庫(kù)唉窃,都會(huì)有一個(gè)命令耙饰,通過(guò)命令安裝。資料中顯示纹份,Go Moudles更智能些苟跪,它會(huì)根據(jù)代碼里import的包名,自動(dòng)下載安裝蔓涧,我們來(lái)操作一下件已。

操作步驟:

  • STEP1: 新建一個(gè)文件,命名為main.go
  • STEP2: main.go的內(nèi)容如下:
package main

import (
    "fmt"
    "rsc.io/quote"
)

func main() {
    fmt.Println(quote.Hello())
}

  • STEP3: 執(zhí)行命令go run main.go
    出現(xiàn)如下錯(cuò)誤:

main.go:5:1: no required module provides package rsc.io/quote; to add it:
go get rsc.io/quote

筆者按照提示元暴,運(yùn)行了go get rsc.io/quote,成功安裝了這個(gè)庫(kù)篷扩。此時(shí),我們可以看懂打印臺(tái)上顯示茉盏,所下載安裝的庫(kù)的版本鉴未。并且,我們也可以在go.mod中鸠姨,看到所安裝庫(kù)的版本信息铜秆。
之后,再次執(zhí)行STEP3的命令讶迁,成功執(zhí)行连茧,看到Hello, world.被打印出來(lái)。

(疑問(wèn): 為什么資料上說(shuō)巍糯,會(huì)自動(dòng)查找并下載安裝啸驯,我已經(jīng)設(shè)置了go modules打開,為什么并沒自動(dòng)下載安裝呢祟峦?
這里罚斗,是不是要每次新安裝庫(kù)的時(shí)候,都要執(zhí)行go get命令呢宅楞?有待調(diào)查)

2.2 go mod使用

我么可以通過(guò)go help mod命令针姿,查詢go mod的命令:

命令 意義
download download modules to local cache
edit edit go.mod from tools or scripts
graph print module requirement graph
init initialize new module in current directory
tidy add missing and remove unused modules
vendor make vendored copy of dependencies
verify verify dependencies have expected content
why explain why packages or modules are needed


3. 常用的庫(kù)

這部分,會(huì)在之后的學(xué)習(xí)中咱筛,慢慢補(bǔ)充搓幌。

3.1 HTTP web framework Gin

https://golang.org/doc/tutorial/web-service-gin
Gin是一個(gè)框架,效率是HttoRoute的40倍迅箩,golang推薦使用的溉愁。



4. 補(bǔ)充知識(shí)–––GOROOT,GOOPATH

??GOROOT,GOOPATH概念拐揭〕敷。看了一些文章,有提到這兩組概念的堂污,雖然家肯,有的概念,貌似已經(jīng)被淘汰了盟猖,感興趣的可以稍微了解下讨衣。(參考

  • GOROOT: GOROOT是Go的安裝目錄。Go安裝程序會(huì)自動(dòng)設(shè)置$GOROOT環(huán)境變量式镐,一般不需要手動(dòng)進(jìn)行設(shè)置反镇。
    Linux下GOROOT的缺省目錄為 /usr/local/go/

  • GOPATH:GOPATH目錄是Go的工作目錄,其中包含本地的項(xiàng)目文件娘汞,項(xiàng)目中引用的的第三方package歹茶,以及生成的二進(jìn)制文件。
    Go語(yǔ)言工具要求GOPATH的目錄結(jié)構(gòu)包含bin,pkg,src三個(gè)子目錄你弦。
    安裝依賴包時(shí)惊豺,多次提到過(guò)GOPATH。但是禽作,因?yàn)楦某蓈ender模式進(jìn)行包管理尸昧,現(xiàn)在已經(jīng)不需要把項(xiàng)目放到GOPATH下了。

上一篇:Go語(yǔ)言入門(一) 后臺(tái)開發(fā):我的第一個(gè)Go項(xiàng)目
下一篇: 待續(xù)领迈。彻磁。碍沐。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末狸捅,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子累提,更是在濱河造成了極大的恐慌尘喝,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斋陪,死亡現(xiàn)場(chǎng)離奇詭異朽褪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)无虚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門缔赠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人友题,你說(shuō)我怎么就攤上這事嗤堰。” “怎么了度宦?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵踢匣,是天一觀的道長(zhǎng)告匠。 經(jīng)常有香客問(wèn)我,道長(zhǎng)离唬,這世上最難降的妖魔是什么后专? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮输莺,結(jié)果婚禮上戚哎,老公的妹妹穿的比我還像新娘。我一直安慰自己嫂用,他們只是感情好建瘫,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著尸折,像睡著了一般啰脚。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上实夹,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天橄浓,我揣著相機(jī)與錄音,去河邊找鬼亮航。 笑死荸实,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缴淋。 我是一名探鬼主播准给,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼重抖!你這毒婦竟也來(lái)了露氮?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤钟沛,失蹤者是張志新(化名)和其女友劉穎畔规,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體恨统,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡叁扫,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了畜埋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莫绣。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖悠鞍,靈堂內(nèi)的尸體忽然破棺而出对室,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布软驰,位于F島的核電站涧窒,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏锭亏。R本人自食惡果不足惜纠吴,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慧瘤。 院中可真熱鬧戴已,春花似錦、人聲如沸锅减。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)怔匣。三九已至握联,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間每瞒,已是汗流浹背金闽。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留剿骨,地道東北人代芜。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像浓利,于是被迫代替她去往敵國(guó)和親挤庇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容