码迷,mamicode.com
首页 > 其他好文 > 详细

Golang系列文章:打印命令行参数

时间:2018-09-06 14:36:50      阅读:303      评论:0      收藏:0      [点我收藏+]

标签:uil   shel   pac   golang   hello   pre   string   使用   引入   

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

标签:uil   shel   pac   golang   hello   pre   string   使用   引入   

原文地址:https://www.cnblogs.com/liuhe688/p/9597709.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!