Golang学习笔记-flag

土豆吞噬者 · · 205 次点击 · · 开始浏览    

使用flag包可以用来解析命令行参数,flag.TypeVar()用于定义参数并绑定到指定变量,flag.Type()用于定义参数并绑定到返回的指针,定义时可以指定参数名称,默认值,使用说明。定义完参数后调用flag.Parse()进行解析,flag.PrintDefaults()用于打印所有已定义参数的默认值和使用说明。

命令行参数的语法有如下三种形式,其中前面的减号可以是两个,整数类型可以是十进制,十六进制,八进制,负数,bool类型可以是1, 0, t, f, true, false, TRUE, FALSE, True, False。如果bool类型的参数在命令行中使用了-flag xxx这种形式,其后的参数都会被当做non-flag参数。

-flag //只支持bool类型,例如-help
-flag=xxx //支持任何类型,例如-help=true -port=4567 -host=127.0.0.1
-flag xxx //只支持非bool类型,例如-port 4567 -host 127.0.0.1

另外,我们还可以创建自定义类型参数,只要实现flag.Value接口即可。如果项目需要更高级的命令行解析方式可以使用第三方库。

package main

import (
    "flag"
    "fmt"
)

var(
    isShowHelp bool
    port uint
)


func main(){
    flag.BoolVar(&isShowHelp,"h",false,"help")
    flag.UintVar(&port,"port",8888,"the port for connection")
    host:=flag.String("host","127.0.0.1","the host")
    flag.Parse()
    if (isShowHelp){
        flag.PrintDefaults()
    }
    fmt.Printf("host:%s,port:%d",*host,port)
}

本文来自:简书

感谢作者:土豆吞噬者

查看原文:Golang学习笔记-flag

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:muxilin131420 备注:入群;或加QQ群:977810755

205 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传