go语言 第三方包安装方法_【分享吧】Go语言第三方包的使用介绍与场景应用
Go語言是一種跨平臺(Mac OS、Windows、Linux 等)的靜態編譯型語言。擁有媲美C語言的強大性能,支持靜態類型安全,在普通計算機上能幾秒內快速編譯一個大項目,開發效率跟動態語言相差無幾。
Go語言在國內擁有非常活躍的社區,未來發展十分看好。當前Go語言主要應用于后端服務的開發,未來隨著Go項目的完善,在系統、游戲、UI界面、AI、物聯網等領域,都將被廣泛使用。
當我們在開發實現中需要引入第三方包的解決方案的時候,就需要對于Go語言第三方包進行下載,引入及版本管理。Go語言擁有很多優秀的第三方包,在后端技術的解決方案上面,第三方包的使用可以實現相應功能需求,而且便于安裝與引用。
01
管理及使用
? ? 1、第三方包的安裝
? ?(1)使用go get 安裝
在互聯網環境下,可以直接通過go get命令進行第三方包的安裝。
比如要安裝 github.com/gin-gonic/gin 則可以通過以下命令:
需要注意的是,執行go get 命令需要先安裝git命令,并配置好git全局變量。
(2)使用源碼包安裝
?由于國內網絡問題,很多時候go get命令并不能安裝,所以就需要到github.com網站上面手動下載源碼包,然后拷貝到相應的工程目錄中進行引用。
比如要安裝 github.com/golang/protobuf/proto
需要去github.com/golang/protobuf下載源碼包,解壓之后拷貝到工程目錄中,以供以后程序開發及編譯時使用。
需要注意的是,GO 和Java 不同,所有import的包必須在%GOPATH路徑下,如果直接導入源碼路徑下的包,編譯會報錯。因為GO只會在$GOPATH 下找包的依賴,而不會在當前工程下找。如果新加入的第三方包是與工程目錄脫離,則在使用或編譯之前需要將第三方包所在的目錄加入到$GOPATH中。
2、管理辦法
第三方包的管理方案有很多種,之前出現過dep和vendor。但是自從在1.11版本初步引入GoModule模塊之后,1.12版本開始正式支持。GoModule是官方提供的包管理解決方案。通過GoModule,開發者可以把工程放在GOPATH之外的位置,使管理更加靈活。
使用GoModule管理依賴后會在項目根目錄下生成兩個文件go.mod和go.sum。
(1)變量設置
要啟用GoModule支持首先要設置環境變量GO111MODULE,通過它可以開啟或關閉模塊支持,它有三個可選值:off、on、auto,默認值是auto。
設置GO111MODULE=on之后就可以使用GoModule了,編譯時會忽略GOPATH和vendor文件夾,只根據go.mod下載依賴。
?因為需要互聯網環境進行管理,在國內網絡環境下,部分第三方包無法正常下載,所以建議設置代理參數GOPROXY,推薦設置為https://goproxy.cn。
?(2)常用命令
? ?初始化相關的命令如下:
通過go mod init命令初始化當前文件夾, 創建go.mod文件。go.mod文件記錄了項目所有的依賴信息,文件內容大致如下:
其中,module用來定義包名,require用來定義依賴包及版本,indirect表示間接引用。
? ? (3)管理依賴包
? ? ?在項目中執行go get命令可以下載依賴包,并且還可以指定下載的版本。
如果下載所有依賴可以使用go mod download命令。
我們在代碼中刪除依賴代碼后,相關的依賴包并不會在go.mod文件中自動移除。這種情況下我們可以使用go mod tidy命令更新go.mod中的依賴關系。
如果需要對一個已經存在的項目啟用GoModule,可以按照以下步驟操作:
3、引用方式
在應用程序中直接import即可。
比如要使用 github.com/gin-gonic/gin 則在引用文件中使用以下引用代碼即可:
02
介紹與應用
下面介紹幾類常用的第三方包的使用場景及應用示例。
1、數據加密
github.com/ZZMarquis/gm
使用場景:實現國密SM2/SM3/SM4算法;實現SM2 X509v3證書簽發和解析。
?開源代碼Star數:★96
?使用方式:
?國密sm3加密實現,示例如下:
國密sm4加密實現,示例如下:
? ? ?golang.org/x/crypto
? ? 使用場景:crypto密碼學的補充包。Pbkdf2非對稱算法的go實現。
??? 開源代碼Star數:★1.7K
??? 使用方式:
? ? Pbkdf2非對稱算法,示例如下:
? ? 2、文件讀取
? ? github.com/spf13/viper
? ? 使用場景:獲取配置文件內容。
??? 開源代碼Star數:★11.4K
??? 使用方式:
? ? 配置文件內容如下:
? ? 配置文件內容讀取,示例如下:
? ? ?github.com/spf13/cast
? ? ?使用場景:獲取配置文件列表內容。
? ? ?開源代碼Star數:★858
? ? ?使用方式:
? ? ?配置文件內容如下:
? ? 配置文件內容讀取,示例如下:
? ? github.com/LindsayBradford/go-dbf/godbf
? ? 使用場景:dbf文件內容解析。
??? 開源代碼Star數:★50
??? 使用方式:
? ? dbf文件內容解析,示例如下:
3、信息通信
github.com/golang/protobuf/proto
使用場景:protobuf支持的補充包。
開源代碼Star數:★6.3K
使用方式:通過protoc-gen-go文件指令進行proto文件編譯生成的go文件內部使用
protobuf結構解析,示例如下:
github.com/dgrijalva/jwt-go
使用場景:進行token生成及管理。
開源代碼Star數:★7.2K
使用方式:
token管理,示例如下:
github.com/gorilla/websocket
使用場景:創建websocket鏈接。
開源代碼Star數:★11.3K
使用方式:
創建websocket鏈接,示例如下:
4、數據庫操作
github.com/mattn/go-sqlite3
使用場景:xorm推薦的sqlite數據庫driver包。
開源代碼Star數:★3.9K
使用方式:
初始化數據庫,示例如下:
github.com/mattn/go-oci8
使用場景:xorm推薦的oracle數據庫driver包。
開源代碼Star數:★3.9K
使用方式:
初始化數據庫,示例如下:
github.com/go-sql-driver/mysql
使用場景:xorm推薦的mysql數據庫driver包。
開源代碼Star數:★9.3K
使用方式:
初始化數據庫,示例如下:
5、基礎框架包
除了以上提到的Go語言第三方包之外,還有一些比較常用的基礎框架包,比如:
github.com/gin-gonic(?高性能的web 框架)
github.com/go-xorm(gin web框架推薦使用的ORM數據庫中間件)
google.golang.org/grpc(grpc協議通信)
由于應用比較廣泛,范例也比較多,此處不再冗述。
03
總結
?開源包的引入在一定程度上解決了日常開發的方案需求,但是加入開源包的使用也對項目開發帶來了一定的風險。在對開源包進行使用之前,一定要對開源包的功能、版本以及使用評價有一定的了解。
●? 可通過開源網站的訪問量、星級標識及更新時間進行質量評估,翻看更新記錄及反饋查看使用情況。
●? 可通過GoModule管理方案進行版本管理,并跟蹤最新版本更新情況。
●? 可通過開源包中的test文件查看使用方式,查看內部邏輯,對于代碼結構設計可以深入研究了解,必要的時候可按照實際情況進行維護。
在對開源包方案進行選型的時候,要對內部的實現邏輯進行充分的了解和研究,防止增加項目的不確定風險。引入開源包之后需要定時去關注版本變化,監控是否發現或解決了某些嚴重缺陷,或者升級優化了某些功能。最終確保做到可使用可維護,能夠不留后患的解決問題。
總結
以上是生活随笔為你收集整理的go语言 第三方包安装方法_【分享吧】Go语言第三方包的使用介绍与场景应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: logback修改第三方包日志打印
- 下一篇: 发布golang第三方包