Go+ 命令行子命令使用教程(4.23)
【摘要】
目录
Go+ 概述
正文
导入包
NewFlagSet 方法
Go+ 概述
Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。
正文
像 g...
目录
Go+ 概述
Go+ 是一门融合工程开发的 Go、数据科学领域的 Python、编程教学领域的 Scratch,以 Python 之形结合 Go 之心,让工程师处理数据不需要学习新的开发语言,让初学者学习编程、开发作品的门槛更低的编程语言。
正文
像 go 和 gop 工具命令一样,都有许多子命令,每个子命令都有自己的标志集。例如,gop build 和 gop get 就是 gop 工具的两个不同的子命令。flag 包允许我们轻松定义具有自己标志的简单子命令。Go+ 提供了命令行子命令的使用方法,今天我们就来了解一下这方面的一些内容。
导入包
Go+ 在处理子命令行时,一般会使用的工具库是 flag 包,导入方式如下:
-
import (
-
"flag"
-
)
NewFlagSet 方法
我们可以使用 NewFlagSet 方法定义自己的子命令,同时为该子命令定义特定的新标志。同一个程序中,我们可以定义多个不同的子命令。
示例代码:
-
package main
-
-
import (
-
"flag"
-
"os"
-
)
-
-
-
fooCmd := flag.NewFlagSet("foo", flag.ExitOnError)
-
fooEnable := fooCmd.Bool("enable", false, "enable")
-
fooName := fooCmd.String("name", "", "name")
-
-
barCmd := flag.NewFlagSet("bar", flag.ExitOnError)
-
barLevel := barCmd.Int("level", 0, "level")
-
-
if len(os.Args) < 2 {
-
println("expected 'foo' or 'bar' subcommands")
-
os.Exit(1)
-
}
-
-
switch os.Args[1] {
-
-
case "foo":
-
fooCmd.Parse(os.Args[2:])
-
println("subcommand 'foo'")
-
println(" enable:", *fooEnable)
-
println(" name:", *fooName)
-
println(" tail:", fooCmd.Args())
-
case "bar":
-
barCmd.Parse(os.Args[2:])
-
println("subcommand 'bar'")
-
println(" level:", *barLevel)
-
println(" tail:", barCmd.Args())
-
default:
-
println("expected 'foo' or 'bar' subcommands")
-
os.Exit(1)
-
}
将上述文件保存成 subcommand.go 文件,然后执行如下命令进行编译:
gop build subcommands.go
执行如下命令:
./subcommands foo -enable -name=joe a1 a2
输出结果:
subcommand 'foo' enable: true name: joe tail: [a1 a2]
执行如下命令:
./subcommands bar -level 8 a1
输出结果:
subcommand 'bar' level: 8 tail: [a1]
执行如下命令:
./command-line-subcommands bar -enable a1
输出结果:
flag provided but not defined: -enable Usage of bar: -level int level
文章来源: liuzhen.blog.csdn.net,作者:Data-Mining,版权归原作者所有,如需转载,请联系作者。
原文链接:liuzhen.blog.csdn.net/article/details/121668253
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)