golang 自定义命令行flag包简单使用

一、为什么需要使用golang自定义命令行

        不恰当的比喻,当我们写了一个服务代码后,按照简单的思维,我们会在业务代码中将要连接的数据库 用户名、主机名、端口号、密码写死。 那么也就意味着我们启动该服务后都只能固定连接某一个数据库,而如果我们将这些参数不用写死,通过启动服务命令行参数进行临时分配,那么我们也就不用去更改业务代码重新编译去执行了。

         题外话:当然,除了自定义命令行来进行临时分配外,我们也可以通过在服务的业务代码中,实现在服务启动时,先去对应的配置文件中读取相关参数进行分配要连接的数据库,当然,我们要明白的是,golang的配置文件在代码编译的时候不会被编译进去。所以我们可以在运行编译好的服务源代码前修改跟随的配置文件。

二、golang自定义命令行参数如何实现

        golang官方其实已经内置了flag包,让我们很方便的定义命令行参数。

        简单的使用案列: 启动服务时,通过命令行给定某个用户的相关信息。

package main

import (
	"flag"
	"fmt"
)


func main() {
	//定义变量
	var (
		name, sex, hobby string
		age int
	)

	// StringVar函数 四个参数
	// 第一个 接收值的变量地址(指针)
	// 第二个 参数key -name -sex -hobby...
	// 第三个 参数默认值 即对应key的value默认值
	// 第四个 对参数的说明
	flag.StringVar(&name,"name","","用户的名称")   //接收name参数并分配给name
	flag.IntVar(&age,"age",0,"用户的年龄")         //接收age参数并分配给age
	flag.StringVar(&sex,"sex","","用户的性别")     //接收sex参数并分配给sex
	flag.StringVar(&hobby,"hobby","","用户的爱好") //接收hobby参数并分配给hobby

	//执行转换
	flag.Parse()

	//打印变量,查看各变量接收到的对应参数
	fmt.Printf("name=%v age=%v sex=%v hobby=%v\n",
		name, age, sex, hobby)
}

        执行结果如下:

        根据执行结果可以知道:

        1.启动命令中的参数顺序与业务代码中的分配变量的顺序可以不用一致,只要key与value 与业务代码变量名对应即可

        2.命令行参数名与值之间可以用 = 号  也可以用空格隔开 两种形式都可以

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值