Go+ 命令行子命令使用教程(4.23)

Posted Data-Mining

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Go+ 命令行子命令使用教程(4.23)相关的知识,希望对你有一定的参考价值。

目录

Go+ 概述

正文

导入包

NewFlagSet 方法


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)的主要内容,如果未能解决你的问题,请参考以下文章

Go命令教程3. go install

Go命令教程12. go tool pprof

UE4 Windows环境下游戏打包基础教程(ios, windows, android)(UFE方式以及命令行方式)

Go命令教程命令汇总

区块链教程Fabric1.0源代码分析Peer peer根命令入口及加载子命令二

Go+ 命令行参数使用教程(4.21)