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系列文章:打印命令行参数的主要内容,如果未能解决你的问题,请参考以下文章

Golang系列文章:读取并统计文件内容

golang获取命令行参数

golang入门

golang命令行参数

golang命令行参数解析

golang命令行参数解析