Go语言学习日记【五】Flag包的使用

一、作用

          flag包实现了对命令行参数的解析

二、示例 

          flag.string(),flag.int() 等函数注册flag,下例声明了一个整数flag,解析结果保存在*int指针ip里:

   

import "flag"
var ip = flag.Int("flagname", 1234, "help message for flagname")

           当然,我们也可以把flag绑定到一个变量,使用Var系列函数:

var flagvar int
func init() {
	flag.IntVar(&flagvar, "flagname", 1234, "help message for flagname")
}

  

        对这种flag,默认值就是该变量的初始值。

        在所有flag都注册之后,调用:flag.Parse()   来解析命令行参数写入注册的flag里

        解析之后,flag的值可以直接使用。如果你使用的是flag自身,它们是指针;如果你绑定到了某个变量,它们是值。

fmt.Println("ip has value ", *ip)
fmt.Println("flagvar has value ", flagvar)

        flag.Args()   // 返回无标志的命令行参数

 

三、代码示例

package main

import (
	"flag"
	"fmt"

)

var (
	arg_help bool
	arg_host string
	arg_port int
)

func init() {
	flag.BoolVar(&arg_help, "h", false, "this help")
	flag.StringVar(&arg_host, "H", "127.0.0.1", "Appoint the host of remote tcp server")

	// 另一种绑定方式
	var _port = flag.Int("P", 8080, "Appoint the port of remote tcp server")

	flag.Parse()

	arg_port = *_port
	fmt.Printf("Input port arg: %d\n", arg_port)
}

func main() {

	if arg_help {
		fmt.Println("This is a tcp client demo, command line is as tcp_client [-H 127.0.0.1] [-P 8080]")
	}

	fmt.Println("Host:", arg_host, "Port:", arg_port)
	fmt.Println(flag.Args())
}

    

  

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值