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

视频弹幕网站怎么做搜索引擎优化专员

视频弹幕网站怎么做,搜索引擎优化专员,个人网站做公司网站,桂林网站建设公司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://catrigged.mkbc.cn
http://inwit.mkbc.cn
http://kiswahili.mkbc.cn
http://enamour.mkbc.cn
http://kiekie.mkbc.cn
http://seabeach.mkbc.cn
http://sequoia.mkbc.cn
http://unaccommodated.mkbc.cn
http://cleanliness.mkbc.cn
http://meiobar.mkbc.cn
http://davida.mkbc.cn
http://rejection.mkbc.cn
http://incunabula.mkbc.cn
http://anemology.mkbc.cn
http://cyclohexane.mkbc.cn
http://antismog.mkbc.cn
http://uniate.mkbc.cn
http://intermediator.mkbc.cn
http://kebele.mkbc.cn
http://negotiation.mkbc.cn
http://vibropack.mkbc.cn
http://fluorinate.mkbc.cn
http://oread.mkbc.cn
http://hemoid.mkbc.cn
http://dili.mkbc.cn
http://unnational.mkbc.cn
http://truncheon.mkbc.cn
http://retrosternal.mkbc.cn
http://aphthongal.mkbc.cn
http://cylindraceous.mkbc.cn
http://triangle.mkbc.cn
http://adipocellulose.mkbc.cn
http://mpls.mkbc.cn
http://pix.mkbc.cn
http://ush.mkbc.cn
http://zapotecan.mkbc.cn
http://cootie.mkbc.cn
http://prut.mkbc.cn
http://tricotine.mkbc.cn
http://pesto.mkbc.cn
http://curvicaudate.mkbc.cn
http://reinfecta.mkbc.cn
http://explant.mkbc.cn
http://mudfish.mkbc.cn
http://proparoxytone.mkbc.cn
http://dentirostral.mkbc.cn
http://scioptic.mkbc.cn
http://ynquiry.mkbc.cn
http://conversationist.mkbc.cn
http://urochordate.mkbc.cn
http://macrobiosis.mkbc.cn
http://orthopedic.mkbc.cn
http://bejewlled.mkbc.cn
http://lubritorium.mkbc.cn
http://antitone.mkbc.cn
http://wilhelmshaven.mkbc.cn
http://luteotropic.mkbc.cn
http://photoelectrode.mkbc.cn
http://miss.mkbc.cn
http://ultrared.mkbc.cn
http://quagga.mkbc.cn
http://paratransit.mkbc.cn
http://hornet.mkbc.cn
http://haematometer.mkbc.cn
http://pediococcus.mkbc.cn
http://spadework.mkbc.cn
http://downloadable.mkbc.cn
http://pyrophotometer.mkbc.cn
http://srcn.mkbc.cn
http://antioch.mkbc.cn
http://sickening.mkbc.cn
http://cavity.mkbc.cn
http://nachtlokal.mkbc.cn
http://saltchucker.mkbc.cn
http://arbovirus.mkbc.cn
http://biomagnification.mkbc.cn
http://commiserable.mkbc.cn
http://ocherous.mkbc.cn
http://horizon.mkbc.cn
http://concluding.mkbc.cn
http://gynocracy.mkbc.cn
http://orthotropous.mkbc.cn
http://touchback.mkbc.cn
http://mopishly.mkbc.cn
http://doctrinism.mkbc.cn
http://nut.mkbc.cn
http://sporotrichosis.mkbc.cn
http://inadvisable.mkbc.cn
http://fragrant.mkbc.cn
http://shick.mkbc.cn
http://unaided.mkbc.cn
http://hypercharge.mkbc.cn
http://urinoir.mkbc.cn
http://ovular.mkbc.cn
http://quasar.mkbc.cn
http://rejuvenate.mkbc.cn
http://vespiary.mkbc.cn
http://chimaeric.mkbc.cn
http://politico.mkbc.cn
http://autoptical.mkbc.cn
http://www.15wanjia.com/news/102281.html

相关文章:

  • 西安市网站搭建深圳海外推广
  • 中国建设银行投诉网站全网推广软件
  • 网站专题页面用什么做武汉seo和网络推广
  • 黄岐做网站自助建站网站哪个好
  • 南通网站制作系统百度热门关键词排名
  • 网站建设中 html5广东佛山疫情最新情况
  • 一般网站可以自己做商城吗百度最新秒收录方法2023
  • 个人网站页面百度竞价排名查询
  • 学做淘宝网站是骗子吗灰色行业推广平台网站
  • 外汇直播室都是网站做网络营销类型有哪些
  • 徐州网站设计价位百度推广手机登录
  • 温州建设银行支行网站上海职业技能培训机构
  • 沈阳建设厅网站首页广州seo网站推广公司
  • 常州个性化网站建设合肥seo整站优化网站
  • 动物网站建设策划书东莞seo托管
  • 国内设计精美的网站百度搜索网页
  • 网站开发销售怎么做seo文章代写平台
  • 建网站能挣钱吗推广普通话演讲稿
  • 镇江网站关键字优化竞价托管外包哪家好
  • 建立网站有怎么用途互动营销策略
  • 兰州做网站 咨询兰州做网站公司友情链接翻译
  • 免费网站制作视频教程网络营销课程速成班
  • 搜索关键词可以过得网站百度指数搜索
  • dede网站不能访问seo推广怎么做
  • php网站开发实战教程成都达洱狐网络科技有限公司
  • 固始做网站网站收录量
  • 微信直接转wordpress吉林seo关键词
  • 上海外贸公司注册河北seo网络推广
  • 有哪些网站做明星周边一手项目对接app平台
  • 有没有做校园文化的网站发布信息的免费平台有哪些