golang代码实例库

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2490|回复: 0

golang:使用flag包定义命名的命令行参数,如:-name=张三

[复制链接]

82

主题

82

帖子

486

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
486
发表于 2021-12-25 15:36:29 | 显示全部楼层 |阅读模式
实例说明
我们在执行一些可执行命令时,经常会传入诸如 -name xxx 之类的参数,我们可以使用flag包实现。
1)使用flag包定义命名参数2)可执行文件 -h 或者 -help会打印所有支持的命令
3)支持的命令行参数格式有以下几种:
-flag xxx (使用空格,一个-符号)
–flag xxx (使用空格,两个-符号)
-flag=xxx (使用等号,一个-符号)
–flag=xxx (使用等号,两个-符号)
其中,布尔类型的参数必须使用等号的方式指定。
Flag解析在第一个非flag参数(单个”-“不是flag参数)之前停止,或者在终止符”–“之后停止。


// 直接-h输出所有支持参数
企业微信截图_f46b63c9-3b70-4047-a59a-b332339ece4f.png


// 支持命令行参数
f475d0e6238b8b06787dee5b0b5bc8de.png

实例代码
[Golang] 纯文本查看 复制代码
package main

import (
        "flag"
        "fmt"
)

// getParams 获取命令行参数
func getParams() (string, int64, string) {
        // 定义参数:env,默认值test
        env := flag.String("env", "test", "非必填:执行环境,默认:test")

        // 定义参数:count,int64类型,默认值10
        count := flag.Int64("count", 10, "非必填:最大处理协程数量,默认:10个")

        // 定义参数name,字符串类型
        var name string
        flag.StringVar(&name, "name", "", "非必填:姓名")

        // 解析命令行参数
        flag.Parse()

        // 注意:前两个是返回的*,后一个直接返回,这个和定义参数的方式flag.String/flag.StringVar不同导致
        return *env, *count, name
}

func main() {
        // 1、首先获取相关参数
        env, count, name := getParams()

        // 2、执行具体任务
        fmt.Printf("env = %s\n", env)
        fmt.Printf("count = %d\n", count)
        fmt.Printf("name = %s\n", name)
}



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|golang代码实例库 ( 粤ICP备2021162396号 )

GMT+8, 2024-11-3 05:20 , Processed in 0.017406 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表