前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Go 语言flag库使用指南

Go 语言flag库使用指南

原创
作者头像
浩瀚星河
发布于 2025-04-04 05:26:10
发布于 2025-04-04 05:26:10
670
举报
文章被收录于专栏:golanggolang

flag 库是 Go 标准库中用于解析命令行参数的工具。它可以将命令行输入的参数提取并绑定到程序中的变量,适用于需要从终端接收用户输入的场景。本文将介绍 flag 库的基本用法、常用函数以及示例。

os.Args:获取命令行参数

os.Args 是一个字符串切片([]string),用于获取命令行传入的所有参数。它以空格分隔参数。

示例代码

代码语言:go
AI代码解释
复制
package main

import (
	"fmt"
	"os"
)

func main() {
	res := os.Args
	fmt.Println(res)
}

执行结果

代码语言:txt
AI代码解释
复制
D:\Code\Program\fucking-golang\go-flag> go run main.go a b c d
[C:\Users\pzj\AppData\Local\Temp\go-build4165448248\b001\exe\main.exe a b c d]

flag.Parse:解析命令行参数

flag.Parse()flag 库的核心函数,用于解析命令行参数并将其绑定到通过 flag 定义的变量上。在调用 flag.Parse() 之前,需要先使用 flag.Type 函数定义参数。

flag 库常用函数

flag.Args() 返回解析后剩余的非标志参数(即不以 --- 开头的参数),类型为 []string

flag.NArg() 返回 flag.Args() 中非标志参数的个数。

flag.NFlag() 返回命令行中已解析的标志参数个数。

flag.Type:定义命令行参数

flag 库提供了多种方法来定义不同类型的命令行参数,格式如下:

代码语言:go
AI代码解释
复制
flag.Type(name string, value Type, usage string) *Type

name:参数名称(在命令行中以 -name--name 形式使用)。

value:默认值。

usage:参数的用途说明(用于生成帮助信息)。

返回值:指向该类型变量的指针。

示例代码

以下是一个完整的示例,展示如何使用 flag 库解析不同类型的命令行参数:

代码语言:go
AI代码解释
复制
package main

import (
	"flag"
	"fmt"
)

var (
	name   = flag.String("name", "", "get name from terminal")
	age    = flag.Int64("age", 0, "get age from terminal")
	isMale = flag.Bool("is_male", true, "get isMale from terminal")
	score  = flag.Float64("score", 99.99, "get score from terminal")
)

func main() {
	flag.Parse()
	fmt.Println(*name, *age, *isMale, *score)
	fmt.Println(flag.Args())
	fmt.Println(flag.NArg())
	fmt.Println(flag.NFlag())
}

执行命令

代码语言:txt
AI代码解释
复制
D:\Code\Program\fucking-golang\go-flag> go run main.go -name=codepzj -age=21 -is_male=true -score=100.00 a b c

输出结果

代码语言:txt
AI代码解释
复制
codepzj 21 true 100
[a b c]
3
4

总结

flag 库提供了一种简单而强大的方式来处理命令行参数。通过 flag.Type 定义参数、flag.Parse() 解析参数,以及辅助函数(如 flag.Args()flag.NArg()flag.NFlag()),开发者可以轻松实现灵活的命令行工具。结合实际需求,flag 库是 Go 语言开发中不可或缺的工具之一。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
一篇文章带你搞定Go语言中flag包使用
Hey,大家好,我是码农,星期八,这次来讲一下的Go语言中,比较常用的一个包flag包。
Go进阶者
2021/03/08
1K0
一篇文章带你搞定Go语言中flag包使用
Go:命令行参数解析包 flag 简介
在 Golang 程序中有很多种方法来处理命令行参数。简单的情况下可以不使用任何库,直接处理 os.Args;其实 Golang 的标准库提供了 flag 包来处理命令行参数;还有第三方提供的处理命令行参数的库,比如 Pflag 等。本文将介绍 Golang 标准库中 flag 包的用法
Freedom123
2024/03/29
2000
Go:命令行参数解析包 flag 简介
GO 每日一库之1:flag
我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态。写博客是一种方式,但不是每天都有想写的,值得写的东西。
luckpunk
2023/09/09
2990
还不会命令行?用Go Flag自写命令行程序
相信大家都用到过命令行工具。尤其当我们在用Linux进行代码开发时,会使用很多工具,比如下面的这张图。那么自己如何开发一个命令行工具呢?
陌无崖
2020/07/27
1K0
还不会命令行?用Go Flag自写命令行程序
Go-标准库-flag(一)
flag 是 Go 语言标准库中提供的一个命令行参数解析库,可以帮助开发者快速地解析命令行参数。
堕落飞鸟
2023/04/22
1940
golang flag包使用笔记
https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter13/13.1.html
我的小碗汤
2018/08/22
1.5K0
golang flag包使用笔记
GoLang读写数据---中
注意 defer 的使用:当打开dst文件时发生了错误,那么 defer 仍然能够确保 src.Close() 执行。如果不这么做,src文件会一直保持打开状态并占用资源。
大忽悠爱学习
2022/08/23
3740
GoLang读写数据---中
002-golang- 命令行参数处理及flag包
os包 os.Args的使用 golang 中可以使用 os.Args 进行 命令行参数的处理。 os 包 os.Args 是一个字符串数组, 其中下标位0 的是调用的程序本身。 flag包关于命令行参数的使用 Go 提供了一个 flag 包,支持基本的命令行标志解析。。 基本的标记声明仅支持字符串、整数和布尔值选项。 wordPtr := flag.String("word", "foo", "a string") 返回的是字符串指针,三个参数分别是:参数名 参数默认值,字符串描述。 用程序中已有的
上善若水.夏
2018/09/28
8240
Go-标准库-flag(三)
flag 包还提供了一些高级用法,例如自定义帮助信息、自定义错误处理等。下面是一些示例:
堕落飞鸟
2023/04/22
3320
Golang开发命令行工具之flag包的使用
日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,我在之前的文章我的生产力工具推荐-终端01篇中有推荐过一些我常用的基于terminal终端的命令行cli工具
仙人技术
2021/10/13
8690
1.Go语言之标准库学习记录(1)
描述: 我们进行Go语言编程之中当遇到不熟悉的内置函数时, 可以采用go doc builtin [builtinFunName]查看go语言内置函数。
全栈工程师修炼指南
2022/09/29
1.1K0
1.Go语言之标准库学习记录(1)
从源码的角度看Go语言flag库如何解析命令行参数!
我上周五喝酒喝到晚上3点多,确实有点罩不住啊,整个周末都在休息和睡觉,文章鸽了几天,想不到就有两个人跑了。
机智的程序员小熊
2021/08/12
7920
Go实战 | 让flag支持从文件中读取命令行参数
golang标准库提供了flag包来处理命令行参数。常规的使用都是在命令行中启动服务的时候一一的输入,让程序解析。今天给大家介绍一种可以从文件中读取命令行参数的实现方法。
Go学堂
2023/01/31
1.3K0
golang flag 命令行参数解析
基础例子 // 注册参数 port := flag.Int("p", 8080, "server Port") // 解析参数, 模块方法将使用 os.Args[1:] 做参数解析 flag.Parse() fmt.Printf("server port:%d", port) 基础类型 Flag 单条flag信息 type Flag struct { Name string // flag在命令行中的名字 Usage string // 帮助信息 Value
copy_left
2019/08/21
2.5K0
golang flag 包的使用指北
说起 golang 的 flag 个包,我们第一反应的是什么呢?至少我曾经第一次看到 flag 包的时候,第一反应是想起写 C 语言的时候咱们用于定义一个表示的,我们一般会命名为 flag 变量
阿兵云原生
2023/09/12
1820
golang flag 包的使用指北
Go 读取命令参数的几种方式
微信截图_20171129195400.png 一名初学者,想要尽快熟悉 Go 语言特性,所以以操作式的学习方法为主,比如编写一个简单的数学计算器,读取命令行参数,进行数学运算。 本文讲述使用三种方式讲述 Go 语言如何接受命令行参数,并完成一个简单的数学计算,为演示方便,最后的命令行结果大概是这样的: # input ./calc add 1 2 # output 3 # input ./calc sub 1 2 # out -1 # input ./calc mul 10 20 # out 20
谢伟
2018/06/06
1.4K0
Go - flag:命令行flags解析
flag作为go的基础模块,属于必知必会的常用模块,flag实现命令行flag解析,比如ls -l中的-l,当然golang内置的flag也可以实现类似docker ps -a中的ps -a这样子命令的效果,今天简短描述下go的flag模块该如何使用
公众号: 云原生生态圈
2020/10/10
6630
Go - flag:命令行flags解析
Go 命令行解析 flag 包之通过子命令实现看 go 命令源码
正式介绍子命令的实现之前,先了解下 flag 包中的一个类型,FlagSet,它表示了一个命令。
波罗学
2019/12/02
1.2K0
Go语言指针 【Go语言圣经笔记】
普通变量在声明语句创建时被绑定到一个变量名,比如叫x的变量,但是还有很多变量始终以表达式方式引入,例如x[i]或者x.f变量。所有这些表达式一般都是读取一个变量的值,除非它们是出现在赋值语句的左边,这种时候是给对应变量赋予一个新的值。
Steve Wang
2021/12/06
7400
go语言学习(三):源码文件
命令源码文件是程序执行的入口,属于main包,包含无参数无返回结果的main函数,同java类似,同一个包下面不建议存放多个main函数。命令源码文件编译或安装后生成可执行文件,存在当前执行命令的目录下。
jinjunzhu
2020/08/20
4290
相关推荐
一篇文章带你搞定Go语言中flag包使用
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档