Go-CLI 命令行实用程序

本文介绍了如何使用Go语言实现一个CLI命令行工具,包括解析命令行参数、检查参数逻辑、运行指令以及文件读写操作。文章详细讲解了flag包的使用,输入输出文件的检查与处理,以及错误处理机制。还提到了测试和完整代码的获取途径。
摘要由CSDN通过智能技术生成

Go语言实现CLI命令行

一. 概述

  CLI(Command Line Interface)实用程序是Linux下应用开发的基础。正确的编写命令行程序让应用与操作系统融为一体,通过shell或script使得应用获得最大的灵活性与开发效率。Linux提供了cat、ls、copy等命令与操作系统交互;go语言提供一组实用程序完成从编码、编译、库管理、产品发布全过程支持;容器服务如docker、k8s提供了大量实用程序支撑云服务的开发、部署、监控、访问等管理任务;git、npm等都是大家比较熟悉的工具。尽管操作系统与应用系统服务可视化、图形化,但在开发领域,CLI在编程、调试、运维、管理中提供了图形化程序不可替代的灵活性与效率。

二. 具体要求

实现指令的要求请点击这里

三. 实现

1. 引用到的包
import (

    "fmt"
    "flag"
    "os"
    "io/ioutil"
    "io"
    "bufio"
    "os/exec"

)
2. 数据结构(指令结构)
type selpg_args struct
{
    start_page int      //开始操作的页编号
    end_page int        //结束操作的页编号
    in_filename string  //读取的文件名
    page_len int        //读取的文本页的数量
    page_type bool      //操作的类型,-lNumber指这表明页有固定长度,每页为Nnumber行,-f在输入中寻找换页符,并将其作为页定界符处理。
    print_dest string   //输出文件名
}
3. main函数
func main(){
    var args selpg_args //命令行参数
    get_args(&args)     //读取命令行参数
    check_args(&args)   //检查参数是否符合要求
    run(&args)          //运行该命令
}
4. 获取参数

func get_args(parg *selpg_args) {
​ flag.IntVar(&(parg.start_page), “s”, -1, “startPage”)
​ flag.IntVar(&(parg.end_page), “e”, -1, “endPage”)
​ flag.IntVar(&(parg.page_len), “l”, 72, “pageLength”)
​ flag.StringVar(&(parg.print_dest), “d”, “”, “printDest”)
​ flag.BoolVar(&(parg.page_type), “f”, false, “pageType”)

​ flag.Parse()

​ args_left := flag.Args()
​ if(len(args_left) > 0){
​ parg.in_filename = string(args_left[0])
​ } else {
​ parg.in_filename = “”
​ }
}

flag是go语言用来解析命令行参数的包,具有很强的功能,定义flags有两种方式:

1)flag.Xxx(),其中Xxx可以是Int、String等;返回一个相应类型的指针,如:

var ip = flag.Int("flagname", 1234, "help message for flagname")

2)flag.XxxVar(),将flag绑定到一个变量上,如:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值