10. Go常用命令及gopm

常用命令

build

  • 用来打包go的源文件
    • build 单个文件 go build file1.go
    • build 多个文件 go build file1.go file2.go
  • build 编译时的附加参数:
    • -v 编译时显示包名
    • -p n 开启并发编译,默认情况下该值为 CPU 逻辑核数
    • -a 强制重新构建
    • -n 打印编译时会用到的所有命令,但不真正执行
    • -x 打印编译时会用到的所有命令
    • -race开启竞态检测
    • -o 指定文件名 go build -o myexec main.go

clean

  • go clean命令可以移除当前源码包和关联源码包里面编译生成的文件
    • 执行go build命令时在当前目录下生成的与包名或者 Go 源码文件同名的可执行文件。
    • 执行go test命令并加入-c标记时在当前目录下生成的以包名加“.test”后缀为名的文件。
    • 执行go install命令安装当前代码包时产生的结果文件。
    • 在编译 Go 或 C 源码文件时遗留在相应目录中的文件或目录。
  • 附加参数
    • -i 清除关联的安装的包和可运行文件,也就是通过go install安装的文件;
    • -n 把需要执行的清除命令打印出来,但是不执行;
    • -r 循环的清除在 import 中引入的包;
    • -x 打印出来执行的详细命令,其实就是 -n 打印的执行版本;
    • -cache 删除所有go build命令的缓存
    • -testcache 删除当前包所有的测试结果

run

  • go run命令会编译源码,并且直接执行源码的 main() 函数,不会在当前目录留下可执行文件。
  • go run不会在运行目录下生成任何文件,可执行文件被放在临时文件中被执行,工作目录被设置为当前目录。在go run的后部可以添加参数,这部分参数会作为代码可以接受的命令行输入提供给程序。

gofmt

  • Go语言的开发团队制定了统一的官方代码风格,并且推出了 ~gofmt· 工具(gofmt 或 go fmt)来帮助开发者格式化他们的代码到统一的风格。
  • gofmt 是一个 cli 程序,会优先读取标准输入,如果传入了文件路径的话,会格式化这个文件,如果传入一个目录,会格式化目录中所有 .go 文件,如果不传参数,会格式化当前目录下的所有 .go 文件。
  • 附加参数
    • -l仅把那些不符合格式化规范的、需要被命令程序改写的源码文件的绝对路径打印到标准输出。而不是把改写后的全部内容都打印到标准输出。
    • -w把改写后的内容直接写入到文件中,而不是作为结果打印到标准输出。
    • -r添加形如“a[b:len(a)] -> a[b:]”的重写规则。如果我们需要自定义某些额外的格式化规则,就需要用到它。
    • -s简化文件中的代码。
    • -d只把改写前后内容的对比信息作为结果打印到标准输出。而不是把改写后的全部内容都打印到标准输出。命令程序将使用 diff 命令对内容进行比对。在 Windows 操作系统下可能没有 diff 命令,需要另行安装。
    • -e打印所有的语法错误到标准输出。如果不使用此标记,则只会打印每行的第 1 个错误且只打印前 10 个错误。
    • -comments是否保留源码文件中的注释。在默认情况下,此标记会被隐式的使用,并且值为 true。
    • -tabwidth此标记用于设置代码中缩进所使用的空格数量,默认值为 8。要使此标记生效,需要使用“-tabs”标记并把值设置为 false。
    • -tabs是否使用 tab('\t')来代替空格表示缩进。在默认情况下,此标记会被隐式的使用,并且值为 true。
    • -cpuprofile是否开启 CPU 使用情况记录,并将记录内容保存在此标记值所指的文件中。

install

  • go build 命令类似,附加参数绝大多数都可以与 go build 通用。go install 只是将编译的中间文件放在 GOPATHpkg 目录下,以及固定地将编译结果放在 GOPATHbin 目录下。

get

  • go get 命令可以借助代码管理工具通过远程拉取或更新代码包及其依赖包,并自动完成编译和安装。整个过程就像安装一个 App 一样简单。
    • go get github.com/davyxu/cellnet
  • 这个命令可以动态获取远程代码包,目前支持的有 BitBucket、GitHub、Google CodeLaunchpad。在使用 go get 命令前,需要安装与远程包匹配的代码管理工具,如 Git、SVN、HG 等,参数中需要提供一个包名。
  • 附加参数
    • -d 只下载不安装
    • -u 强制使用网络去更新包和它的依赖包
    • -f 只有在你包含了 -u 参数的时候才有效,不让 -u 去验证 import 中的每一个都已经获取了,这对于本地 fork 的包特别有用
    • -fix 在获取源码之后先运行 fix,然后再去做其他的事情
    • -t 同时也下载需要为运行测试所需要的包
    • -v显示执行的命令

gopm

  • go get 命令因为网络原因可能导致某些包无法下载
  • 使用gopm来获取无法下载的包(安装需使用命令行工具)github地址:
  • 安装 go get -u github.com/gpmgo/gopm
  • 常用命令
# 查看当前工程依赖
gopm list
# 显示依赖详细信息
gopm list -v
# 列出文件依赖
gopm list -t [file]
# 拉取依赖到缓存目录
gopm get -r xxx
# 仅下载当前指定的包
gopm get -d xxx
# 拉取依赖到$GOPATH
gopm get -g xxx
# 检查更新所有包
gopm get -u xxx
# 拉取到当前所在目录
gopm get -l xxx
# 运行当前目录程序
gopm run
# 生成当前工程的 gopmfile 文件用于包管理
gopm gen -v
# 根据当前项目 gopmfile 链接依赖并执行 go install
gopm install -v
# 更新当前依赖
gopm update -v
# 清理临时文件
gopm clean
# 编译到当前目录
gopm bin

generate

  • go generate 命令是在Go语言 1.4 版本里面新添加的一个命令,当运行该命令时,它将扫描与当前包相关的源代码文件,找出所有包含 //go:generate的特殊注释,提取并执行该特殊注释后面的命令。
  • 注意
    • 该特殊注释必须在 .go 源码文件中;
    • 每个源码文件可以包含多个 generate 特殊注释;
    • 运行go generate命令时,才会执行特殊注释后面的命令;
    • go generate命令执行出错时,将终止程序的运行;
    • 特殊注释必须以//go:generate开头,双斜线后面没有空格。
  • 格式go generate [-run regexp] [-n] [-v] [-x] [command] [build flags] [file.go... | packages]
    • -run 正则表达式匹配命令行,仅执行匹配的命令;
    • -v 输出被处理的包名和源文件名;
    • -n 显示不执行命令;
    • -x 显示并执行命令;
    • command 可以是在环境变量 PATH 中的任何命令。

test

go test 命令,会自动读取源码目录下面名为 *_test.go 的文件,生成并运行测试用的可执行文件。

pprof

Go语言工具链中的 go pprof 可以帮助开发者快速分析及定位各种性能问题,如 CPU 消耗、内存分配及阻塞分析。

go pprof 工具链配合 Graphviz 图形化工具可以将runtime.pprof包生成的数据转换为 PDF 格式,以图片的方式展示程序的性能分析结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Go语言中,安装第三方包需要下载、引入和版本管理。你可以使用以下步骤来安装第三方包: 1. 首先,在命令行中使用`go get`命令下载第三方包。例如,如果要安装github.com/gin-gonic/gin包,可以运行以下命令:`go get github.com/gin-gonic/gin***出一个pkg文件夹,其中包含你安装的包。 3. 如果你无法直接在网络上安装包,你可以选择离线安装的方法。首先,你需要到对应的第三方包的GitHub页面(例如https://github.com/gpmgo/gopm)下载源码压缩文件。 4. 将下载的源码压缩文件解压到对应的文件夹,并按照相应的目录结构进行构建。 5. 对于手动安装,你可以使用`go install`命令来安装包。例如,如果要安装github.com/gpmgo/gopm包,可以运行以下命令:`go install github.com/gpmgo/gopm`。 需要注意的是,Go语言对于导入的包有一定的规范。所有import的包必须在%GOPATH路径下,如果直接导入源码路径下的包,编译会报错。因此,如果新加入的第三方包与工程目录脱离,你需要在使用或编译之前将第三方包所在的目录加入到$GOPATH中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [go语言 第三方包安装方法_【分享吧】Go语言第三方包的使用介绍与场景应用](https://blog.csdn.net/weixin_39760650/article/details/110134234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Golang中第三方包安装方法-git](https://blog.csdn.net/yycoolsam/article/details/106194192)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值