Go+ 命令行子命令使用教程(4.23)
Posted Data-Mining
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go+ 命令行子命令使用教程(4.23)相关的知识,希望对你有一定的参考价值。
目录
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
以上是关于Go+ 命令行子命令使用教程(4.23)的主要内容,如果未能解决你的问题,请参考以下文章
UE4 Windows环境下游戏打包基础教程(ios, windows, android)(UFE方式以及命令行方式)