前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言之带参数的main函数

Go语言之带参数的main函数

作者头像
灰子学技术
发布于 2023-10-30 07:43:28
发布于 2023-10-30 07:43:28
8060
举报
文章被收录于专栏:灰子学技术灰子学技术

本篇文章只用来讲解如何实现,一个带命令行的程序。对于这个功能的实现方法,有两种,一种是通过os包的os.Args来实现;另外一种通过flag包来实现。

方法一:os.Args实现

下面我们来写一个main函数,里面os.Args是一个[]string类型,在运行main函数的时候,命令行中的参数会被写入到os.Args数据中。

不过这样的参数不能够指定是什么类型,也不可以指定tag是什么,例如:-t, -h 等等。

1.直接将os.Args放到main函数中

output1:

$ ./args1

output2:

$ ./args1 -y -t -o 0000000

备注:通过输出的结果能够发现os.Args中,也会将执行的命令./args1放到os.Args[0]中。

2.对于os.Args实现在argsfunc()中

os.Args不只可以在main函数中使用,同时也可以在其他函数中使用,如此看来,os.Args更像是一个全局变量,它应该是在main之前的时候,就将命令行中的参数写到os.Args里面去了。

output:

$ ./args 0 0 0 1 20 30

备注:通过输出可以看出,在main函数中实现的参数和argsfunc函数中实现的os.Args并无差别。

方法二:flag包实现方式

flag包对参数的支持更加的强大,不单单能够指定参数的tag(例如:-h, -t等),还可以指定每个参数的类型。

在使用flag的时候,首先,声明参数对应的类型和格式;其次,使用参数之前需要调用flag.Parse(),这一步的操作应该就是将命令行中的参数列表,解析到自己生命的参数格式里面。

output 1: // 只是执行可执行文件

$ ./args2

$ ./args2 -b -s hello -t 10 the other args

备注:通过输出结果可以看出flag.Parse()解析之后,并不会把./args做为第一个参数,就像是从os.Args[1:]开始读取的数据,并没有读os.Args[0]的数据。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 灰子学技术 微信公众号,前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
go语言学习(三):源码文件
命令源码文件是程序执行的入口,属于main包,包含无参数无返回结果的main函数,同java类似,同一个包下面不建议存放多个main函数。命令源码文件编译或安装后生成可执行文件,存在当前执行命令的目录下。
jinjunzhu
2020/08/20
4480
从源码的角度看Go语言flag库如何解析命令行参数!
我上周五喝酒喝到晚上3点多,确实有点罩不住啊,整个周末都在休息和睡觉,文章鸽了几天,想不到就有两个人跑了。
机智的程序员小熊
2021/08/12
8110
Go 语言flag库使用指南
flag 库是 Go 标准库中用于解析命令行参数的工具。它可以将命令行输入的参数提取并绑定到程序中的变量,适用于需要从终端接收用户输入的场景。本文将介绍 flag 库的基本用法、常用函数以及示例。
浩瀚星河
2025/04/04
1050
Go 语言flag库使用指南
一篇文章带你搞定Go语言中flag包使用
Hey,大家好,我是码农,星期八,这次来讲一下的Go语言中,比较常用的一个包flag包。
Go进阶者
2021/03/08
1K0
一篇文章带你搞定Go语言中flag包使用
golang flag 包的使用指北
说起 golang 的 flag 个包,我们第一反应的是什么呢?至少我曾经第一次看到 flag 包的时候,第一反应是想起写 C 语言的时候咱们用于定义一个表示的,我们一般会命名为 flag 变量
阿兵云原生
2023/09/12
1940
golang flag 包的使用指北
Go语言核心36讲(Go语言基础知识二)--学习笔记
我们已经知道,环境变量 GOPATH 指向的是一个或多个工作区,每个工作区中都会有以代码包为基本组织形式的源码文件。
郑子铭
2021/10/13
3520
Go语言核心36讲(Go语言基础知识二)--学习笔记
Go语言库系列之flag
终端(命令行)操作是程序员的必备技能,但是你知道怎么通过golang制作出如下命令吗?
平也
2020/04/03
5110
Go-标准库-flag(一)
flag 是 Go 语言标准库中提供的一个命令行参数解析库,可以帮助开发者快速地解析命令行参数。
堕落飞鸟
2023/04/22
1970
Go 命令行解析 flag 包之通过子命令实现看 go 命令源码
正式介绍子命令的实现之前,先了解下 flag 包中的一个类型,FlagSet,它表示了一个命令。
波罗学
2019/12/02
1.2K0
理解Go语言组件flag
同时该函数返回的是指针类型,打印变量ip时记得加上指针符号来输出地址对应的值。在执行flag.String后,记得执行flag.Parse来解析命令,否则不能执行成功。我们来测试一下,先键入一个错的参数,会得到以下提示。
平也
2020/04/03
6440
[GO专栏-3]Go语言的变量定义
以上三个表达式均是合法的,第三个表达式会将i初始化为int类型的零值,0;如果i是bool类型,则为false;i是float64类型,则为0.0;i为string类型,则为"";i为interface类型,则为nil;i为引用类型,则为nil;如果i是struct,则是将struct中所有的字段初始化为对应类型的零值。
苏州程序大白
2022/04/13
7700
Go:命令行参数解析包 flag 简介
在 Golang 程序中有很多种方法来处理命令行参数。简单的情况下可以不使用任何库,直接处理 os.Args;其实 Golang 的标准库提供了 flag 包来处理命令行参数;还有第三方提供的处理命令行参数的库,比如 Pflag 等。本文将介绍 Golang 标准库中 flag 包的用法
Freedom123
2024/03/29
2170
Go:命令行参数解析包 flag 简介
命令源码文件
定义:命令源码文件是程序的原型入口,是每个可独立运行的程序必须拥有的,我们可以通过构建和安装生成对应的可执行文件,后者一般与该命令源码文件的直接父目录同名
酷走天涯
2019/06/11
7420
命令源码文件
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
8320
GoLang读写数据---中
注意 defer 的使用:当打开dst文件时发生了错误,那么 defer 仍然能够确保 src.Close() 执行。如果不这么做,src文件会一直保持打开状态并占用资源。
大忽悠爱学习
2022/08/23
3950
GoLang读写数据---中
golang flag包使用笔记
https://books.studygolang.com/The-Golang-Standard-Library-by-Example/chapter13/13.1.html
我的小碗汤
2018/08/22
1.5K0
golang flag包使用笔记
Go语言简介 — 特性
goroutine GoRoutine主要是使用go关键字来调用函数,你还可以使用匿名函数,如下所示: package main import "fmt" func f(msg string) { fmt.Println(msg) } func main(){ go f("goroutine") go func(msg string) { fmt.Println(msg) }("going") } 你可以简单的把go关键字调用的函数想像成pthre
禹都一只猫olei
2018/08/09
1.4K0
Go - flag:命令行flags解析
flag作为go的基础模块,属于必知必会的常用模块,flag实现命令行flag解析,比如ls -l中的-l,当然golang内置的flag也可以实现类似docker ps -a中的ps -a这样子命令的效果,今天简短描述下go的flag模块该如何使用
公众号: 云原生生态圈
2020/10/10
6670
Go - flag:命令行flags解析
Golang开发命令行工具之flag包的使用
日常命令行操作,相对应的众多命令行工具是提高生产力的必备工具,我在之前的文章我的生产力工具推荐-终端01篇中有推荐过一些我常用的基于terminal终端的命令行cli工具
仙人技术
2021/10/13
8800
Golang实现一个linux命令ls命令(命令行工具构建)
定义如下,一个数组。该数组长度由参数个数决定,第一个参数为程序本身,后面为参数列表。
机智的程序员小熊
2023/03/02
8010
Golang实现一个linux命令ls命令(命令行工具构建)
相关推荐
go语言学习(三):源码文件
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档