go程序包开发,复杂命令行支持

课程任务

  • 了解 Cobra包,使用 cobra 命令行生成一个简单的带子命令的命令行程序
  • 模仿 cobra.Command 编写一个 myCobra 库
  • 将带子命令的命令行处理程序的 import (“github.com/spf13/cobra”) 改为 import (corbra
    “gitee.com/yourId/yourRepo”)
  • 使得命令行处理程序修改代价最小,即可正常运行

了解Cobra包

cobra 的主要功能为提供简易的子命令行模式,如 app server, app fetch 等等

Cobra包hello world

  1. 获取cobra包

    go get -v github.com/spf13/cobra/cobra
    
  2. 生成程序

    cobra init --pkg-name packagename
    

    这里我用的demo作为程序名,如图
    在这里插入图片描述
    可以看到生成了这几个东西
    在这里插入图片描述

  3. 尝试运行
    在这里插入图片描述 首先为了正常运行,将import的demo/cmd改成了当前文件下的cmd (windows运行的缘故)
    在这里插入图片描述
    然后会发现有些包没有装上,发现装上也没有用,同样报了相同的错误,经过网上到处搜寻还是没有找到解决办法。。
    最后发现网上的解决办法都是默认基于module打开的缘故,所以将GO111MODULE设置成off就可以正常运行了。。
    在这里插入图片描述

  4. 加个子命令 test

cobra add test

在这里插入图片描述

  1. 再次运行
    在这里插入图片描述可以看到available commands下多了个自己写的test分支

  2. 运行子命令

go run main.go test

在这里插入图片描述
至此完成第一个任务的作业,接下来是修改cobra包改成自己的command.go

模仿 cobra.Command 编写一个 myCobra 库

首先观察刚刚生成的程序用到了哪些函数

  1. test.go (此处test是子命令test)
    1. Command数据结构
    2. AddCommand
  2. root.go
    1. Command数据结构
    2. Execute

可以看到核心是command数据结构,所以先搭建command,观察得到test.go中的command用到的有use, short, long, run
所以先把几个加进command中,稍微修改一下后就能跑起来了,底下放测试

测试

在这里插入图片描述

在这里插入图片描述

首先将两个import改掉,然后注释掉几个没实现的函数,最后尝试运行

结果

在这里插入图片描述
如图,重新跑之后是可以跑出如上结果的,实验结束

代码

gitee

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值