Golang系列:打印命令行参数
记得最早在学校机房学习 Java 时,照着书上的例子,写一个最简单 main 方法,当程序运行并在屏幕上打印出 hello world 时,内心竟有种莫名的激动,相信很多人都有这种经历吧。
不管学什么编程语言,都先从命令行程序搞起。
首先,我们来写一个 Go 语言版的 hello world 程序:
// hello.gopackage mainimport "fmt"func main() {fmt.Println("hello world")
}
接下来,我们可以直接在命令行执行下面的命令来运行该程序:
$ go run hello.go
当然,也可以先将源代码编译成可执行文件,然后再运行可执行文件:
# 在当前目录会生成同名可执行文件
$ go build hello.go# 运行可执行文件
$ ./hello
运行完程序,命令行会输出一个 hello world,对于刚入门的同学,这一刻兴奋的心情是难以言表的。
我们可不是这么轻易就满足的,接下来,我们还要接收命令行参数并打印出来,趁着刚才的兴奋劲儿再写一段程序:
// args.gopackage mainimport ("fmt""os"
)func main() {fmt.Println(os.Args[:]);
}
上面的代码看上去很简单,却多了些奇怪的写法。首先,我们新引入了一个 os 包,然后又多了个 os.Args[:] 这样的写法。
os 是操作系统相关功能包,os.Args 表示命令行参数,它的类型是 []string 字符串切片,我们通过 os.Args[:] 获取所有命令行参数,其中第一个是当前执行的文件,后面是额外指定的参数。
这些知识点后续也会深入介绍,现在先不管他三七二十一,跑一跑遛遛再说。
编译后运行可执行文件:
$ ./args hello world# 输出结果
[./args hello world]
一般来说,我们真正需要的是从第二个位置开始的参数,下面程序利用 len() 函数获取切片的长度,然后使用 for 循环从索引为 1 的地方开始取值,取出的值以连字符分隔开:
// args.gopackage mainimport ("fmt""os"
)func main() {// 声明后默认值是空字符串var str, sep stringfor i := 1; i < len(os.Args); i++ {str += sep + os.Args[i]sep = "-"}fmt.Println(str)
}
再次编译后运行:
$ ./args hello world# 输出结果
hello-world
我们还可以先利用 os.Args[1:] 获取到所需的参数集,然后使用 range 来遍历参数集:
// args.gopackage mainimport ("fmt""os"
)func main() {// 声明并初始化的简写方式str, sep := "", ""// range会产生{index, value} 这里不需要indexfor _, arg := range os.Args[1:] {str += sep + argsep = "-"}fmt.Println(str)
}
最后,我们还可以引入 strings 包,使用 strings.Join() 方法,将参数集以指定字符分隔开:
// args.gopackage mainimport ("fmt""os""strings"
)func main() {fmt.Println(strings.Join(os.Args[1:], "-"));
}
现在,我们已经学会好几种“回字”的写法了。?
转载于:https://www.cnblogs.com/liuhe688/p/9597709.html
Golang系列:打印命令行参数相关推荐
- python 命令行 参数_Python命令行参数
python 命令行 参数 Python Command line arguments are input parameters passed to the script when executing ...
- golang 命令行参数解析
这里填写标题 1. golang 命令行参数解析 1.1. os.Args 1.2. flag 1.2.1. flag 的其他参数 1.2.2. 其它 1.2.2.1. 命令行解析出来后对应的是代码中 ...
- golang flag包(命令行参数解析)
1.1 使用示例: 我们以 nginx 为例,执行 nginx -h,输出如下: nginx version: nginx/1.10.0 Usage: nginx [-?hvVtTq] [-s sig ...
- 程序4-1 对每个命令行参数打印文件类型
1 //http://blog.chinaunix.net/uid-24549279-id-71355.html 2 /* 3 ==================================== ...
- golang同时使用命令行参数和配置文件
面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>> golang同时使用命令行参数和配置文件 [toc] 之前使用过spring-boot框架,在配置参数传递上可以 ...
- golang输入命令行参数
os包以跨平台的方式,提供了一些与操作系统交互的函数和变量.程序的命令行参数可从os包的Args变量获取:os包外部使用os.Args访问该变量. package mainimport (" ...
- golang flag包使用示例:接收命令行参数
flag包 package mainimport "flag" import "fmt"// 定义命令行参数对应的变量,这三个变量都是指针类型 var cliN ...
- 基于Golang的CLI 命令行程序开发
基于Golang的CLI 命令行程序开发 [阅读时间:约15分钟] 一. CLI 命令行程序概述 二. 系统环境&项目介绍&开发准备 1.系统环境 2.项目介绍 3.开发准备 三.具体 ...
- linux下perl命令行参数,Perl One-Liners | Perl命令行学习1 -e参数
注:本内容需要点的perl编程基础,最好是读过<perl语言入门>. 本系列是自己平常学习工作中的总结,每一个实例均为我为了讲解而设置的,自己试过的,如有错误,望能见谅 Perl 命令行参 ...
最新文章
- 欧洲、加拿大、澳大利亚新增2.1万个点可购买比特币现金
- javascript操作select下拉列表框的一点小经验
- python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...
- 线上活动 | 2020年PM如何提高求职成功率?
- OpenCV PCA提取对象的方向的实例(附完整代码)
- SharePoint designer 文件--新建中没有工作流
- TOJ---2621--全排列
- Unable to run Kiwi tests on iOS8 device
- VALSE学习(十四):自主学习
- java 获取及修改系统变量
- SPSS基础教程—怎样对数据进行综合评价排名
- gitlab权限分配
- C++11(及现代C++风格)和快速迭代式开发 -- 刘未鹏
- win11激活office出问题
- 4 款超级好用的终端文件管理器
- 采购配置SAP Purchasing Configuration Tips and Tricks
- 大型超市购物车蓝牙智能锁解决方案
- 《Python 1》--python的简介、解释器、读取键盘输入函数、变量类型推断、5个标准数据类型、字符串的内置函数、for循环、list列表、tuple元组、字典dictionary
- linux pkg文件,技术|Linux 包管理基础:apt、yum、dnf 和 pkg
- spring-boot整合redies、mybatis、thymeleaf
热门文章
- 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。...
- django HttpResponse的用法
- ArcMap 导入Excel坐标数据
- Java面试基础知识(1)
- 设置Tomcat管理员用户名和密码
- css的一种预处理器 sass
- Hive高级用法汇总
- 继承,is,as,多态
- C语言计算分段函数pta,PTA浙大版《C语言程序设计(第3版)》题目集 练习2-11 计算分段函数[2] (10分)...
- linux系统安装宝塔面板