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系列:打印命令行参数的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql数据库(3)-查询
- 下一篇: 如何判断两个时间段是否有交集