主要解释 cobra 三方库的使用,快速创建命令行工具,类比 grep、less 这样的指令。还会有很大的篇幅来介绍接收控制台命令行输入,因为控制台本身存在存在一些限制或者说模式的影响,会导致单行文本的输入受限。
环境准备
go 语言环境准备,mac 使用 homebrew 进行包管理,而本机的 go 版本过低需要进行升级,本地版本: go version go1.21.11 darwin/amd64
cobra 命令行
仓库地址:https://github.com/spf13/cobra
作者提供了一个脚手架命令:cobra-cli
来方便我们快速搭建仓库,cobra-cli is a command line program to generate cobra applications and command files
更多的细节都可以通过阅读README
来获得,建议大家再使用之前去看一下README
是否已经发生了变更
go install github.com/spf13/cobra-cli@latest
获取控制台的用户输入
我们现在开始搭建一个命令行项目,项目名称:small
,然后一次执行下面的命令,就完成了初始工程的搭建:
我们增加一个命令行指令:input
,用来接收控制台的用户输入,然后将输入重新输出到控制台。
- 命令行的功能部分依赖
cobra-cli
添加cobra-cli add input
,框架代码就搭建好了 - 读取控制台的部分依赖大模型自动生成
自动生成的代码逻辑部分:go语言读取os.stdin的控制输入的代码,代码部分已经开发完成了,看一下最终的执行效果
go
reader := bufio.NewReader(os.Stdin)
fmt.Print("请输入一些文本,然后按回车: ")
// ReadLine 会读取一行文本,直到遇到换行符('\n')
input, err := reader.ReadString('\n')
if err != nil {
fmt.Fprintf(os.Stderr, "读取输入时发生错误: %v\n", err)
os.Exit(1)
}
// 去除输入末尾的换行符
input = strings.TrimSuffix(input, "\n")
fmt.Printf("你输入的是: %s\n", input)