8.3 简单的命令行操作
在大部分语言中,都会有命令行交互的场景。
比如我实现了一个在Linux
终端运行的小程序,那么我执行程序后需要我输入一些内容,之后进行一些计算及业务逻辑。
本节我们使用一个简单示例:输入秒级时间戳,转换输出当前的时间。
本节代码存放目录为 lesson25
捕获命令行的输入,我们主要使用bufio
与os.Stdin
来实现。代码如下所示:
func main() {
reader := bufio.NewReader(os.Stdin)
fmt.Println("请输入时间戳 (输入 exit 退出)")
for {
fmt.Printf("时间戳: ")
input, err := reader.ReadString('\n')
if err != nil {
fmt.Println("读取输入错误: ", err)
continue
}
input = strings.TrimSpace(input)
if input == "exit" {
fmt.Println("退出程序")
break
}
ts, err := strconv.ParseInt(input, 10, 64)
if err != nil {
fmt.Println("输入的时间戳格式有误")
continue
}
date := time.Unix(ts, 64).Format("2006-01-02 15:04:05")
fmt.Println("转换结果: ", date)
}
}
在上面的代码中,我们使用reader.ReadString
读取命令行的输入,之后根据读取到的值进行转换操作。
执行效果如下:
请输入时间戳 (输入 exit 退出)
时间戳: 1724136990
转换结果: 2024-08-20 14:56:30
时间戳: 1724137010
转换结果: 2024-08-20 14:56:50
时间戳: exit
退出程序
当我们在写一些脚本及小工具的时候,这种方法是比较有用的,同时我们可能还有其他的需求。
比如:执行程序的时候在命令后方直接加上参数,也就是将参数带到脚本里面。
我们可以参照 odate,这是一个简易的进行时间处理的小工具,代码比较简单,适合作为案例学习。
书籍地址:https://youcan.golang.website/
书籍代码:https://github.com/YouCanGolang
我的GitHub:https://github.com/swxctx