如何创建 Go (Golang) 命令行工具
请参考以下文章,了解关于构建环境的方法:
使用 Docker 和 Visual Studio Code 进行 Go (Golang) 开发环境的配置 – Qiita
基本 (jī
首先,我们需要初始化 Golang 项目。
创建一个项目文件夹,并在该文件夹下方执行以下命令:
go mod init <リポジトリーのパス>
他喜欢吃意大利面。
他喜欢吃披萨。
go mod init github.com/yukihiko-shinoda/go-commandline-tool
※ 存储库的路径以后还可以更改。
然后,将创建一个名为 go.mod 的文件。
project/
+---go.mod
接下来,创建一个.go文件
例子:
project/
+---commandline_tool.go
+---go.mod
package main
func main() {
println("Hello world!")
}
在这种情况下,需要注意以下事项:
package は main とします
コマンドラインツールを実行したときの処理を main() に定義します
将该代码安装为命令行工具
有两种安装方法可供选择
安装
执行 go install 命令时,只需输入 go mod init <存储库路径> 中存储库名称的部分作为命令名称。
$ go install
$ go-commandline-tool
Hello world!
安装 <.go 文件名>
输入 go install 后再输入.go文件名,去除文件名的扩展名部分将成为命令名。
$ go install commandline_tool.go
$ commandline_tool
Hello world!
如果要创建多个命令行工具
由于无法在一个包中定义多个 main(),因此需要将仓库分开或创建子文件夹。
如果要创建子文件夹,则通常需要创建cmd文件夹,并进一步为每个命令创建子文件夹。
project/
+----cmd/
+----command1/
| +----command1.go
+----command2/
+----command2.go
顺便提一下,Golang 官方并没有明确推荐的文件夹结构,
尽管没有官方提及 cmd 文件夹,
但许多 Golang 项目似乎遵循以下非官方最佳实践来创建 cmd 文件夹:
参考文献:golang-standards/project-layout:Go项目的标准布局
每个.go文件的package都应该设为main,
而在每个文件中,将命令行执行的处理定义为main()函数。
通过以下命令,可以执行go文件名对应的命令:
$ go install cmd/command1/command1.go
$ go install cmd/command2/command2.go
$ command1
Hello world 1!
$ command2
Hello world 2!
从代码库中安装命令行工具。
以下所述的内容假设您已经具备Git等版本控制系统的知识。关于版本控制系统的基础知识,请参考以下文章:Linux 知识的不需要的Git教程目录| ultra code。
通过将创建的命令行工具推送到版本控制系统中,如Git仓库,同时标记上相应的版本标签,可以随时在安装了Golang的环境中安装命令行工具。
go install <リポジトリーの main パッケージのフォルダーまでのパス>@<バージョンを示すタグ>
如果要安装命令行工具的根包,版本标签为v1.0.0。
go install github.com/yukihiko-shinoda/go-commandline-tool@v1.0.0
若要安装由cmd/command1/command1.go文件实现的命令行工具,并且安装的是标签v1.0.0所表示的版本:
go install github.com/yukihiko-shinoda/go-commandline-tool/cmd/command1@v1.0.0
在这种情况下,命令名称将成为包含定义 main() 的 .go 文件名的父文件夹的名称,而不是 .go 文件名。
将每种安装方法的命令名称整理成一张表格。
根据先前观察到的情况来看,命令名称会根据安装方法的不同而发生变化。总结起来如下:
go.mod
を含むフォルダーで go install
最初に実行した go mod init <リポジトリーのパス>
のリポジトリー名の部分go install <.go ファイル名>
.go
ファイル名の拡張子を除いた部分の文字列リポジトリーからコマンドラインツールをインストールリポジトリーの main パッケージのフォルダー名为了使命令名称在开发时和发布时不发生变化的方法是什么?
可以采取以下方法,确保在开发阶段和发布阶段,命令名称保持不变。
在项目根目录下创建命令行工具。
在开发过程中,如果要安装命令行工具进行测试,请使用 go install 命令而不指定文件名。
创建一个子文件夹并创建命令行工具时
创建一个具有相同名称的文件夹和定义 main() 的 .go 文件名。
给我一杯咖啡。
project/
+----cmd/
+----command1/
| +----command1.go
+----command2/
+----command2.go