03-go的包管理
在Go 1.11和1.12版本時就已經支持了對包管理功能,但還是相對有一些小的問題,不過在后續的版本中已經陸續解決。增加包管理是必然趨勢,一門好的語言,不光要有好的生態,優美的語法,包管理也是必不可缺的功能,例如大名鼎鼎 npm,就連 C++ 也要推出包管理,好的包管理會讓項目更加整潔,依賴關系也相對清晰。
回顧go的前世包管理
在go沒有支持新的包管理之前,對于項目中的包管理方式是五花八門的,這種情況導致各個項目之間存在很多潛在問題,并且都需要手動下載,基本上有以下一些:
- 使用官方的方式也就是不借助其他工具,所有依賴包都需要自行手動下載。
- 使用的第三方庫對于包管理是沒有版本管理的,此時第三方進行不兼容更新,會導致很多錯誤。
- 多人協作開發項目,必須限定每個開發者在
$GOPATH/src
目錄下安裝依賴。 - 第三方包和自己項目的源碼會混合,導致項目很混亂。
不合理的地方還有很多,不一一列舉,好在這樣的時代已經過去,迎接而來的是一片光明。
新的包管理
新的包管理解決了上面提到的大部分問題,有以下特點:
- 自動下載依賴包
- 項目不是必須存放在
GOPATH/src
目錄下了 - 所有依賴會在一個叫go.mod文件內存放
- 所有第三方庫會有相應的版本管理
- 對于一些已經轉移的包