Go使用flag包开发命令行工具

Posted chenqionghe

tags:

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

flag包是Go语言标准库提供用来解析命令行参数的包,使得开发命令行工具更为简单

常用方法

1.flag.Usage

输出使用方法,如linux下ls -h的帮助输出

2.flag.Type(参数名, 默认值, 使用提示)

Type为类型 如String, Int, Uint 调用相应的flag.Sring flag.Int flag.Uint方法

方法返回相应类型的指针

3.flag.Type(指针, 参数名, 默认值, 使用提示)

与flag.Type方法基本相同,不同的是多一个指针参数,将使用传入的指针,不会再创建指针返回

4.flag.Args

返回解析完命令行参数后的其他参数,如./sh -name cqh  a1 a2,将返回a1 a2

5.flag.Parse

执行解析

使用示例代码

创建test.go

package main

import (
    "fmt"
    "flag"
)

func main() {
    namePtr := flag.String("name", "username", "姓名")
    agePtr := flag.Int("age", 18, "年龄")
    musclePtr := flag.Bool("muscle", true, "是否有肌肉")

    var email string
    flag.StringVar(&email, "email", "[email protected]", "邮箱")


    flag.Parse()

    args := flag.Args()
    fmt.Println("name:", *namePtr)
    fmt.Println("age:", *agePtr)
    fmt.Println("muscle:", *musclePtr)
    fmt.Println("email:", email)
    fmt.Println("args:", args)
}

  

执行go buld后,建立test执行文件

./test -h

输出

Usage of ./test:
  -age int
        年龄 (default 18)
  -email string
        邮箱 (default "[email protected]")
  -muscle
        是否有肌肉 (default true)
  -name string
        姓名 (default "username")

 执行

./test -name 肌肉男 -age 20 -email [email protected] 哈哈 呵呵 嘿嘿

 输出

name: 肌肉男
age: 20
muscle: true
email: musc[email protected]
args: [哈哈 呵呵 嘿嘿]

  

就是这样,Light weight baby !

 

以上是关于Go使用flag包开发命令行工具的主要内容,如果未能解决你的问题,请参考以下文章

Go语言标准库之flag

go语言标准库之flag

Go flag 命令行参数解析

Go flag 命令行参数解析

go语言 从命令行获取参数解析

go语言学习-标准库flag和log