Golang系列文章:打印命令行参数
Posted liuhe688
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Golang系列文章:打印命令行参数相关的知识,希望对你有一定的参考价值。
记得最早在学校机房学习Java时,写一个最简单main方法,当程序运行并在屏幕上打印出hello world
时,内心还有些小激动呢,相信很多人都有这种经历吧。今天想借助命令行程序,总结一下Go语言的基础知识点。
首先,来一个Go语言版的hello world:
// hello.go
package main
import "fmt"
func main() {
fmt.Println("hello world")
}
我们可以直接在命令行执行下面的命令来运行该程序:
$ go run hello.go
当然,也可以先将源代码编译成可执行文件,然后再运行可执行文件:
# 在当前目录会生成同名可执行文件
$ go build hello.go
# 运行可执行文件
$ ./hello
接下来,我们要接收命令行参数并打印出来:
// args.go
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println(os.Args[:]);
}
在上面代码中,os.Args表示命令行参数,它的类型是[]string字符串切片,我们通过os.Args[:]
获取所有命令行参数,其中第一个是当前执行的文件,后面是额外指定的参数。我们编译后运行可执行文件:
$ ./args hello world
# 输出结果
[./args hello world]
一般来说,我们真正需要的是除第一个之外的参数,下面程序利用len()
函数获取切片的长度,然后使用for循环从索引为1的地方开始取值,取出的值以连字符分隔开:
// args.go
package main
import (
"fmt"
"os"
)
func main() {
var str, sep string
for 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.go
package main
import (
"fmt"
"os"
)
func main() {
str, sep := "", ""
// range会产生{index, value} 这里不需要index
for _, arg := range os.Args[1:] {
str += sep + arg
sep = "-"
}
fmt.Println(str)
}
最后,我们还可以引入strings
包,使用strings.Join()
方法,将参数集以指定字符分隔开:
// args.go
package main
import (
"fmt"
"os"
"strings"
)
func main() {
fmt.Println(strings.Join(os.Args[1:], "-"));
}
以上是关于Golang系列文章:打印命令行参数的主要内容,如果未能解决你的问题,请参考以下文章