记得最早在学校机房学习 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系列:打印命令行参数相关推荐

  1. python 命令行 参数_Python命令行参数

    python 命令行 参数 Python Command line arguments are input parameters passed to the script when executing ...

  2. golang 命令行参数解析

    这里填写标题 1. golang 命令行参数解析 1.1. os.Args 1.2. flag 1.2.1. flag 的其他参数 1.2.2. 其它 1.2.2.1. 命令行解析出来后对应的是代码中 ...

  3. golang flag包(命令行参数解析)

    1.1 使用示例: 我们以 nginx 为例,执行 nginx -h,输出如下: nginx version: nginx/1.10.0 Usage: nginx [-?hvVtTq] [-s sig ...

  4. 程序4-1 对每个命令行参数打印文件类型

    1 //http://blog.chinaunix.net/uid-24549279-id-71355.html 2 /* 3 ==================================== ...

  5. golang同时使用命令行参数和配置文件

    面试:你懂什么是分布式系统吗?Redis分布式锁都不会?>>>    golang同时使用命令行参数和配置文件 [toc] 之前使用过spring-boot框架,在配置参数传递上可以 ...

  6. golang输入命令行参数

    os包以跨平台的方式,提供了一些与操作系统交互的函数和变量.程序的命令行参数可从os包的Args变量获取:os包外部使用os.Args访问该变量. package mainimport (" ...

  7. golang flag包使用示例:接收命令行参数

    flag包 package mainimport "flag" import "fmt"// 定义命令行参数对应的变量,这三个变量都是指针类型 var cliN ...

  8. 基于Golang的CLI 命令行程序开发

    基于Golang的CLI 命令行程序开发 [阅读时间:约15分钟] 一. CLI 命令行程序概述 二. 系统环境&项目介绍&开发准备 1.系统环境 2.项目介绍 3.开发准备 三.具体 ...

  9. linux下perl命令行参数,Perl One-Liners | Perl命令行学习1 -e参数

    注:本内容需要点的perl编程基础,最好是读过<perl语言入门>. 本系列是自己平常学习工作中的总结,每一个实例均为我为了讲解而设置的,自己试过的,如有错误,望能见谅 Perl 命令行参 ...

最新文章

  1. 欧洲、加拿大、澳大利亚新增2.1万个点可购买比特币现金
  2. javascript操作select下拉列表框的一点小经验
  3. python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...
  4. 线上活动 | 2020年PM如何提高求职成功率?
  5. OpenCV PCA提取对象的方向的实例(附完整代码)
  6. SharePoint designer 文件--新建中没有工作流
  7. TOJ---2621--全排列
  8. Unable to run Kiwi tests on iOS8 device
  9. VALSE学习(十四):自主学习
  10. java 获取及修改系统变量
  11. SPSS基础教程—怎样对数据进行综合评价排名
  12. gitlab权限分配
  13. C++11(及现代C++风格)和快速迭代式开发 -- 刘未鹏
  14. win11激活office出问题
  15. 4 款超级好用的终端文件管理器
  16. 采购配置SAP Purchasing Configuration Tips and Tricks
  17. 大型超市购物车蓝牙智能锁解决方案
  18. 《Python 1》--python的简介、解释器、读取键盘输入函数、变量类型推断、5个标准数据类型、字符串的内置函数、for循环、list列表、tuple元组、字典dictionary
  19. linux pkg文件,技术|Linux 包管理基础:apt、yum、dnf 和 pkg
  20. spring-boot整合redies、mybatis、thymeleaf

热门文章

  1. 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。...
  2. django HttpResponse的用法
  3. ArcMap 导入Excel坐标数据
  4. Java面试基础知识(1)
  5. 设置Tomcat管理员用户名和密码
  6. css的一种预处理器 sass
  7. Hive高级用法汇总
  8. 继承,is,as,多态
  9. C语言计算分段函数pta,PTA浙大版《C语言程序设计(第3版)》题目集 练习2-11 计算分段函数[2] (10分)...
  10. linux系统安装宝塔面板