Go语言 编写最简单的命令行工具
在 Go 语言中,我们可以轻松地编写命令行工具。本文将介绍如何使用 Go 语言编写一个最简单的命令行工具,涉及到命令行参数os.Args
和用户输入bufio
。
一、命令行参数os.Args
在 Go 语言中,os.Args
是一个字符串切片,它包含了命令行启动程序时传递的参数。第一个参数是程序的名称,后续的参数是用户在命令行中输入的参数。使用os.Args
获取命令行参数并打印出来:
package mainimport "fmt"func main() {if len(os.Args) > 1 {fmt.Println("命令行参数:")for _, arg := range os.Args[1:] {fmt.Println(arg)}} else {fmt.Println("没有输入命令行参数。")}
}
二、用户输入bufio
除了命令行参数,我们还可以使用bufio
包从用户那里获取输入。bufio
包提供了缓冲 I/O 的功能,可以更高效地处理输入和输出。使用bufio
包获取用户输入并打印出来:
package mainimport ("bufio""fmt""os"
)func main() {reader := bufio.NewReader(os.Stdin)fmt.Println("请输入一些内容:")input, _ := reader.ReadString('\n')fmt.Println("你输入的内容是:", input)
}
三、结合命令行参数和用户输入
我们可以将命令行参数和用户输入结合起来,创建一个更复杂的命令行工具。例如,我们可以根据命令行参数执行不同的操作,并从用户那里获取进一步的输入:
package mainimport ("bufio""fmt""os"
)func main() {if len(os.Args) > 1 {fmt.Println("命令行参数:", os.Args[1])reader := bufio.NewReader(os.Stdin)fmt.Println("请输入一些内容:")input, _ := reader.ReadString('\n')fmt.Println("你输入的内容是:", input)} else {fmt.Println("没有输入命令行参数。")}
}
四、编译和运行
打开命令行终端,进入包含 Go 代码文件的目录,编译 Go 程序:
go build your_program.go
运行可执行文件:
./your_program [命令行参数]
五、区别
在 Go 语言中,os.Args
用于获取命令行启动程序时传递的参数,是一个字符串切片,第一个参数是程序名称,后续是用户输入的参数。
而bufio
包中的bufio.NewReader(os.Stdin)
可从用户那里获取输入,通过ReadString('\n')
等方法读取用户输入直到遇到换行符。
区别在于os.Args
获取的是启动程序时在命令行提前给定的参数,bufio
则是在程序运行中等待用户实时输入内容。