go os.Args 学习

os.Args学习

package main

import (
	"fmt"
	"os"
	"strings"
)

func main() {
	fmt.Println("Hello, world 世界!")

	var s, sep string
	for i := 1; i < len(os.Args); i++ {
		s += sep + os.Args[i]
		sep = " "
	}
	fmt.Println(os.Args[0])
	fmt.Println(s)
	fmt.Println(strings.Join(os.Args[1:], " "))
	fmt.Println(strings.Join(os.Args[1:], "_"))
	fmt.Println(strings.Join(os.Args[1:3], "_"))
	
	// for range 的使用
	s = ""
	sep = ""
	for _, arg := range os.Args[1:] {
		s += sep + arg
		sep = "_"
	}
	fmt.Println(s)
	
	// fmt.Println(strings.Join(os.Args[1:5], "#")) 
	// panic: runtime error: slice bounds out of range [:5] with capacity 4
	// goroutine 1 [running]:
	// main.main()
	//        /Users/majinbo/Study/go/hellowork.go:21 +0x33f
	// exit status 2
}


go run hellowork.go abc def ghi
Hello, world 世界!
/var/folders/l2/6m6kq90s4p382ld1r7bv4dwm0000l2/T/go-build2133640648/b001/exe/hellowork
abc def ghi
abc def ghi
abc_def_ghi
abc_def
abc_def_ghi

从例子里透出的知识点:

  1. os.Args 其实同C语言里的agrc 与argv 这两个参数的作用;
  2. 数字访问单个元素,可以直接s[i]访问;
  3. s[1:3] 表示访问的是从下标1开始,连续3-1个元素,即左开右闭[1,3)
  4. s[1:] 表示从下标元素到结尾,相当于s[1:len(s)]
  5. strings.Join 相当于上边的for循环的结果
  6. for range的使用,每次迭代,range产生一对值,索引与元素,可通过"_"丢掉不用的变量
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值