当前位置: 首页 > news >正文

长沙专业做网站的公司知乎关键词优化软件

长沙专业做网站的公司,知乎关键词优化软件,营销型网站设计网站,快站app下载cobra 是什么 cobra 的主要功能是创建强大的现代 cli 应用程序。目前市面上许多的著名的 Go 语言开源项目都是使用 Cobra 来构建的,例如:K8s、Hugo、etcd、Docker 等,是非常可靠的一个开源项目。 没有 cobra 之前用什么 如果不用 cobra&am…

cobra 是什么

cobra 的主要功能是创建强大的现代 cli 应用程序。目前市面上许多的著名的 Go 语言开源项目都是使用 Cobra 来构建的,例如:K8s、Hugo、etcd、Docker 等,是非常可靠的一个开源项目。

没有 cobra 之前用什么

如果不用 cobra,我们也可以使用 go 自带的 flag 标准库

flag 的基本用法

下面代码中,我们调用标准库 flagStringVar 方法实现了对命令行参数 name 的解析和绑定,其各个形参的含义分别为命令行标识位的名称、默认值、帮助信息。

命令行参数支持如下三种命令行标志语法:

  • -flag 仅支持布尔类型
  • -flag x 仅支持非布尔类型
  • -flag=x 均支持
package mainimport ("flag""fmt"
)func main() {var name string// 名称为 name、默认值为 "Go go go!"flag.StringVar(&name, "name", "Go go go!", "帮助信息")flag.StringVar(&name, "n", "Go go go!", "帮助信息")flag.Parse()fmt.Printf("name: %s\n", name)
}

执行:

// 均输出 abc
go run main.go -name=abc
go run main.go -n=abc

子命令实现

在我们日常使用的 CLI 应用中,另一个最常见的功能就是子命令的使用,一个工具它可能包含大量相关联的功能命令以此形成工具集,可以说是刚需,那么这个功能在标准库 flag 中可以如何实现呢,如下述示例:

package mainimport ("flag""log"
)var name stringfunc main() {flag.Parse()args := flag.Args()if len(args) == 0 {return}switch args[0] {case "go":goCmd := flag.NewFlagSet("go", flag.ExitOnError)goCmd.StringVar(&name, "name", "Go 语言", "帮助信息")_ = goCmd.Parse(args[1:])case "php":phpCmd := flag.NewFlagSet("php", flag.ExitOnError)phpCmd.StringVar(&name, "n", "PHP 语言", "帮助信息")_ = phpCmd.Parse(args[1:])}log.Printf("name: %s", name)
}

在上述代码中,我们首先调用了 flag.Parse 方法,将命令行解析为定义的标志,便于我们后续的参数使用。

另外由于我们需要处理子命令的情况,因此我们调用了 flag.NewFlagSet 方法,该方法会返回带有指定名称和错误处理属性的空命令集给我们去使用,相当于就是创建了一个新的命令集去支持子命令了。

这里需要特别注意的是 flag.NewFlagSet 方法的第二个参数是 ErrorHandling,用于指定处理异常错误,其内置提供以下三种模式:

const (// 返回错误描述ContinueOnError ErrorHandling = iota// 调用 os.Exit(2) 退出程序ExitOnError// 调用 panic 语句抛出错误异常PanicOnError
)
➜ go run main.go go    
2022/08/04 08:59:21 name: Go 语言
➜ go run main.go php  
2022/08/04 09:00:54 name: PHP 语言
➜ go run main.go php -n abc   
2022/08/04 09:01:05 name: abc

使用 cobra

安装:

go get -u github.com/spf13/cobra

示例:

package mainimport ("fmt""github.com/spf13/cobra""log"
)func main() {var wordCmd = &cobra.Command{Use:   "test",         // 子命令的命令标识Short: "测试",           // 简短说明Long:  "测试 cobra 子命令", // 完整说明Run: func(cmd *cobra.Command, args []string) {fmt.Println(args)},}var rootCmd = &cobra.Command{}rootCmd.AddCommand(wordCmd)err := rootCmd.Execute()if err != nil {log.Fatalf("cmd.Execute err: %v", err)}
}

在上面的例子中,我们添加了一个 test 子命令,使用:

➜  go run main.go test abc
[abc]

这里把 wordCmdrootCmd 都写在一块不是一个好的实践,如果命令多的情况下,这个文件会非常大。

http://www.ds6.com.cn/news/52409.html

相关文章:

  • 网站需要续费吗武汉网站竞价推广
  • 怎么做网站后缀识别符号才不会变广告主平台
  • 网站规划的一般步骤seo营销培训咨询
  • 电子商务网站建设评估的指标郑州seo顾问阿亮
  • 西安网站建设西安杭州企业seo
  • 网站设计主色学校24小时人工在线客服
  • 宁波网站制作 收费女教师遭网课入侵视频大全集
  • 网站开发软件费用营销型网站特点
  • 人力社保网站建设的意义b2b网站
  • 全球建站seo优化前景
  • 做网站插入文档特殊字符百度推广业务员电话
  • 广东建设监理协会网站常州网络推广seo
  • 南阳网站排名优化费用搜索seo引擎
  • 吉林省政府网站建设内容免费个人网站建站申请
  • 满山红厦门网站建设站长之家域名
  • 免费开源cms网站源码关键词挖掘机爱站网
  • 鲁山网站建设武汉网站搜索引擎优化
  • 网站建设按钮seo搜索引擎是什么
  • 成都中小企业申请网站今日头条搜索优化
  • 怎么给自己的公司做网站顾问式营销
  • wordpress 新窗口打开上海有什么seo公司
  • 网站登录注册页面模板下载企业管理培训公司排行榜
  • 深圳做响应式网站设计推广软文代写
  • 商品网站建设实验报告全国疫情最新数据
  • 哪里有做网站开发必应搜索引擎怎么样
  • 延津县建设局网站seo点击排名源码
  • 绵阳网站改版怎样精准搜索关键词
  • 烟台商城网站建设电商网站项目
  • 免费电子商务网站建设南宁seo内部优化
  • 一个公司做100个网站百度精准搜索