0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

介紹Go里面經(jīng)常使用到的命令行工具

冬至子 ? 來源:洋芋土豆 ? 作者:真沒什么深度 ? 2023-05-22 16:58 ? 次閱讀

概述

優(yōu)秀的工具配合熟練的使用,往往可以讓開發(fā)效率大幅度提升,本小節(jié)介紹 Go 里面經(jīng)常使用到的命令行工具。

install

go install 命令編譯并安裝指定的包以及對(duì)應(yīng)的依賴包。

# 安裝 golint 包
$ go install golang.org/x/lint/golint@latest
# go: downloading golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7

# 一般會(huì)直接將命令放入 $GOPATH/bin
$ which golint
# /home/codes/go/bin/golint

get

go get 命令將指定的包以及對(duì)應(yīng)的依賴包加入到當(dāng)前 module。

go getgo install 主要區(qū)別在于: install 是命令的全局安裝,不會(huì)將包及其依賴加入到當(dāng)前 module。

需要注意的一點(diǎn)是: 每個(gè)包都有對(duì)應(yīng)的 Go 版本以及其他包依賴,如果指定了包的版本號(hào),但是當(dāng)前 Go 版本或者依賴包的版本不滿足條件,將無法安裝 。

添加最新可用包

# 獲取 golint 包, -u 參數(shù)表示獲取指定的包的依賴項(xiàng),以便在包有新的版本可用時(shí)使用
# 如果包名稱后面不加 `@版本號(hào)`,則默認(rèn)為 `latest` 最新可用的
$ go get -u golang.org/x/lint/golint
# go: added golang.org/x/lint v0.0.0-20210508222113-6edffad5e616
# go: added golang.org/x/tools v0.3.0

# go.mod 中依賴項(xiàng)已經(jīng)更新 
$ cat go.mod

# 輸出如下:
module helloworld

go 1.19

require (
        golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect
        golang.org/x/tools v0.3.0 // indirect
)

添加指定可用包

# 指定包的版本號(hào)為 @v1.4.1 
$ go get -u github.com/spf13/cast@v1.4.1 
# go: added github.com/spf13/cast v1.4.1

# go.mod 中依賴項(xiàng)已經(jīng)更新 
$ cat go.mod

# 輸出如下:
module helloworld

go 1.19

require (
    github.com/spf13/cast v1.4.1 // indirect
    golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 // indirect
    golang.org/x/tools v0.3.0 // indirect
)

mod

go mod 命令管理 module 相關(guān)操作。

子命令

go mod init  # 初始化
go mod tidy  # 更新 (移除) 依賴文件
go mod download  # 下載依賴文件

go mod vendor  # 將依賴全部歸檔到 vendor 目錄
go mod edit    # 修改依賴文件
go mod graph   # 打印依賴關(guān)系 圖
go mod verify  # 校驗(yàn)依賴

clean

go clean 命令刪除執(zhí)行其他命令時(shí)產(chǎn)生的目標(biāo)和緩存文件。

list

go list 命令展示 module 或包的信息

示例

# 不帶參數(shù),展示 module
$ go list
# helloworld

# 展示某個(gè)包的信息
$ go list golang.org/x/lint/golint
# 默認(rèn)只輸出包名
# golang.org/x/lint/golint

# 獲取詳細(xì)信息,并以 json 格式輸出
$ go list -json golang.org/x/lint/golint
{
    "Dir": "/home/codes/go/pkg/mod/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616/golint",
    "ImportPath": "golang.org/x/lint/golint",
    "Name": "main",
  ...
  ...
}

# 獲取包的路徑
$ go list -f '{{.Dir}}' golang.org/x/lint/golint
# /home/codes/go/pkg/mod/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616/golint

# 切換路徑到包的目錄
$ cd $(go list -f '{{.Dir}}' golang.org/x/lint/golint)

$ pwd
# /home/codes/go/pkg/mod/golang.org/x/lint@v0.0.0-20210508222113-6edffad5e616/golint

fix

go fix 命令將指定代碼包里面所有的 Go 標(biāo)準(zhǔn)庫函數(shù)從低版本升級(jí)到高版本,自動(dòng)實(shí)現(xiàn)兼容性。

筆者沒有使用過這個(gè)命令,感興趣的讀者可以找一個(gè)第三方包的低級(jí)版本,然后嘗試一下使用 go fix 升級(jí)。

格式化

goimports

goimports 命令可以對(duì)代碼格式化,同時(shí),它可以自動(dòng)更新導(dǎo)入包的 路徑和順序,并且自動(dòng)刪除未使用的包。

# 安裝 goimports
$ go install golang.org/x/tools/cmd/goimports@latest

# 格式化單個(gè)文件
$ goimports -w main.go

# 格式化整個(gè)目錄
$ goimports -w foo

文檔

go doc

go doc 命令可以查看包的文檔。

# 查看 time.Now() 方法文檔
$ go doc time.Now
# 輸出如下 
package time // import "time"

func Now() Time
    Now returns the current local time.
    
    
# 查看 fmt.Printf() 方法文檔
$ go doc fmt.Printf
# 輸出如下
package fmt // import "fmt"

func Printf(format string, a ...any) (n int, err error)
    Printf formats according to a format specifier and writes to standard
    output. It returns the number of bytes written and any write error
    encountered.

除此之外,也可以直接查看某個(gè)包的文檔

$ go doc strconv
# 輸出省略
package strconv // import "strconv"
...
...
func Unquote(s string) (string, error)
func UnquoteChar(s string, quote byte) (value rune, multibyte bool, tail string, err error)
type NumError struct{ ... }

godoc

godoc 用來 提取和生成 文檔,而且還有一個(gè)很強(qiáng)大的功能: 將文檔在瀏覽器內(nèi)打開,實(shí)現(xiàn)離線文檔的效果。

# 瀏覽器訪問 Go 文檔
$ godoc -http=localhost:6060
# 打開瀏覽器,訪問 localhost:6060,可以看到 Go 所有包的文檔

圖片

godoc 瀏覽器文檔

關(guān)于 提取文檔 的功能,限于篇幅,筆者這里不再做介紹,感興趣的讀者可以自行查閱 godoc 文檔。

swaggo

Swag 通過 Go 代碼注釋生成標(biāo)準(zhǔn) Swagger 文檔,通過其內(nèi)置的插件,可以快速與現(xiàn)有項(xiàng)目集成。

# 安裝
$ go install github.com/swaggo/swag/cmd/swag@latest
# 查看版本
$ swag version 
# swag version v1.8.7

限于篇幅,具體的使用方法筆者這里不再做介紹,讀者可以參考 附錄 2 的 Github 主頁文檔,下面是一個(gè)生成的文檔頁面:

圖片

swag

lint

golangci-lint

golangci-lint 是一個(gè)快速的 Go linters 運(yùn)行器,可以并行運(yùn)行 linters 并使用緩存,支持 yaml 配置與主流 IDE 集成,包含了數(shù)十個(gè) linters 。

這是官網(wǎng)的介紹, 簡單來說,golangci-lint靜態(tài)分析工具集大成者,包含了幾乎所有的主流分析工具, 如 errcheck, govet, statischeck, unused 等,也就是說: 靜態(tài)分析工具,有這一個(gè)就夠了。

限于篇幅,具體的使用方法筆者這里不再做介紹,讀者可以參考 附錄 4 的官方文檔。

小結(jié)

本小節(jié)主要介紹了常用的 Go 內(nèi)置命令行工具,此外,順帶著介紹了文檔生成工具 swaggo, 靜態(tài)分析工具 golangci-lint, 這些都是日常開發(fā)必備工具,建議讀者參照文檔多加練習(xí),做到熟練掌握。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • go語言
    +關(guān)注

    關(guān)注

    1

    文章

    157

    瀏覽量

    9016
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    在STM32實(shí)現(xiàn)命令行

    工作中的開發(fā)環(huán)境都是基于linux命令行交互,作為命令行的重度使用者,玩單片機(jī)也要使用命令行工具,百度了一些命令行
    發(fā)表于 12-09 11:32 ?2236次閱讀

    linux命令行下載工具

    wget是linux下常用的命令行下載工具,是Linux用戶是必不可少的工具,尤其對(duì)于網(wǎng)絡(luò)管理員,經(jīng)常要下載一些軟件。而tget是一個(gè)簡單的命令行
    發(fā)表于 07-25 07:02

    caxa命令行中的應(yīng)用

    caxa命令行中的應(yīng)用 命令行對(duì)于大多用戶來說往往只是輸入數(shù)據(jù)的作用,但是其中的奧妙還有很多,下面就給大家
    發(fā)表于 10-18 18:18 ?2276次閱讀

    CMD的命令行高級(jí)教程

    CMD的命令行高級(jí)教程
    發(fā)表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級(jí)教程

    監(jiān)控jvm常用的5個(gè)命令行工具

    常用的幾個(gè)命令行工具有jps、jstat、jinfo、jmap、jstack等。這幾個(gè)工具可以安裝openjdk-devel-debug包。
    的頭像 發(fā)表于 02-06 14:47 ?5826次閱讀
    監(jiān)控jvm常用的5個(gè)<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>

    實(shí)用 Linux 命令行使用技巧集錦

    下面介紹的都是一些命令行工具,這些工具在日常工作中都很有用。
    的頭像 發(fā)表于 03-21 14:42 ?4711次閱讀

    Xilinx軟件命令行工具:XSCT開發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺(tái)。
    的頭像 發(fā)表于 11-21 06:02 ?1.4w次閱讀

    Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試

    了解如何使用XSCT,Xilinx軟件命令行工具進(jìn)行開發(fā)和調(diào)試。 該視頻演示了XSCT如何充當(dāng)Xilinx SDK的命令行控制臺(tái)。
    的頭像 發(fā)表于 11-22 06:53 ?6610次閱讀

    Git常見的誤區(qū)和命令行工具等綜述

    Git常見的誤區(qū)和命令行工具等綜述
    發(fā)表于 08-31 09:51 ?0次下載

    自己動(dòng)手實(shí)現(xiàn)命令行解析器

    一、介紹嵌入式里面經(jīng)常會(huì)自己做命令行,這里分享一個(gè)命令解析器代碼實(shí)現(xiàn)二、代碼實(shí)現(xiàn)mycmd.c
    發(fā)表于 12-22 18:51 ?13次下載
    自己動(dòng)手實(shí)現(xiàn)<b class='flag-5'>命令行</b>解析器

    Golang基于flag庫實(shí)現(xiàn)一個(gè)命令行工具

    Golang 標(biāo)準(zhǔn)庫中的 flag 庫提供了解析命令行選項(xiàng)的能力,我們可以基于此來開發(fā)命令行工具。
    的頭像 發(fā)表于 10-28 09:26 ?1249次閱讀

    新的開源命令行工具west

    電子發(fā)燒友網(wǎng)站提供《新的開源命令行工具west.zip》資料免費(fèi)下載
    發(fā)表于 11-11 09:25 ?0次下載
    新的開源<b class='flag-5'>命令行</b><b class='flag-5'>工具</b>west

    PetaLinux工具文檔:命令行參考指南

    電子發(fā)燒友網(wǎng)站提供《PetaLinux工具文檔:命令行參考指南.pdf》資料免費(fèi)下載
    發(fā)表于 09-15 14:52 ?0次下載
    PetaLinux<b class='flag-5'>工具</b>文檔:<b class='flag-5'>命令行</b>參考指南

    idea如何輸入命令行參數(shù)

    在許多軟件開發(fā)和系統(tǒng)管理的任務(wù)中,我們經(jīng)常需要向應(yīng)用程序傳遞命令行參數(shù)。命令行參數(shù)是在運(yùn)行時(shí)傳遞給程序的值,用于指定程序的行為和配置選項(xiàng)。本文將詳細(xì)介紹如何在不同的編程語言和操作系統(tǒng)中
    的頭像 發(fā)表于 12-06 15:01 ?1032次閱讀

    HarmonyOS開發(fā):【基于命令行(安裝庫和工具集)】

    使用命令行進(jìn)行設(shè)備開發(fā)時(shí),可以通過以下步驟安裝編譯OpenHarmony需要的庫和工具
    的頭像 發(fā)表于 04-25 21:03 ?357次閱讀
    HarmonyOS開發(fā):【基于<b class='flag-5'>命令行</b>(安裝庫和<b class='flag-5'>工具</b>集)】