This commit is contained in:
Akagi201
2016-04-03 17:23:09 +08:00
parent ec232f536e
commit 2f1470dad2
4 changed files with 5 additions and 5 deletions

View File

@@ -4,7 +4,7 @@
`os`包以跨平台的方式提供了一些与操作系统交互的函数和变量。程序的命令行参数可从os包的Args变量获取os包外部使用os.Args访问该变量。
os.Args变量是一个字符串string的*切片*slice译注slice和Python语言中的切片类似是一个简版的动态数组切片是Go语言的基础概念稍后详细介绍。现在先把切片s当作数组元素序列, 序列的长度动态变化, 用`s[i]`访问单个元素,用`s[m:n]`获取子序列(译注和python里的语法差不多)。序列的元素数目为len(s)。和大多数编程语言类似区间索引时Go言里也采用左闭右开形式, 即,区间包括第一个索引元素,不包括最后一个, 因为这样可以简化逻辑。译注比如a = [1, 2, 3, 4, 5], a[0:3] = [1, 2, 3]不包含最后一个元素。比如s[m:n]这个切片0 ≤ m ≤ n ≤ len(s)包含n-m个元素。
os.Args变量是一个字符串string的*切片*slice译注slice和Python语言中的切片类似是一个简版的动态数组切片是Go语言的基础概念稍后详细介绍。现在先把切片s当作数组元素序列, 序列的长度动态变化, 用`s[i]`访问单个元素,用`s[m:n]`获取子序列(译注和python里的语法差不多)。序列的元素数目为len(s)。和大多数编程语言类似区间索引时Go言里也采用左闭右开形式, 即,区间包括第一个索引元素,不包括最后一个, 因为这样可以简化逻辑。译注比如a = [1, 2, 3, 4, 5], a[0:3] = [1, 2, 3]不包含最后一个元素。比如s[m:n]这个切片0 ≤ m ≤ n ≤ len(s)包含n-m个元素。
os.Args的第一个元素os.Args[0], 是命令本身的名字其它的元素则是程序启动时传给它的参数。s[m:n]形式的切片表达式产生从第m个元素到第n-1个元素的切片下个例子用到的元素包含在os.Args[1:len(os.Args)]切片中。如果省略切片表达式的m或n会默认传入0或len(s)因此前面的切片可以简写成os.Args[1:]。
@@ -115,7 +115,7 @@ func main() {
每次循环迭代,`range`产生一对值;索引以及在该索引处的元素值。这个例子不需要索引,但`range`的语法要求, 要处理元素, 必须处理索引。一种思路是把索引赋值给一个临时变量, 如`temp`, 然后忽略它的值但Go语言不允许使用无用的局部变量local variables因为这会导致编译错误。
Go语言中这种情况的解决方法是用`空标识符`blank identifier`_`(也就是下划线)。空标识符可用于任何语法需要变量名但程序逻辑不需要的时候, 例如, 在循环里,丢弃不需要的循环索引, 保留元素值。大多数的Go程序员都会像上面这样使用`range``_``echo`程序,因为隐式地而非显地索引os.Args容易写对。
Go语言中这种情况的解决方法是用`空标识符`blank identifier`_`(也就是下划线)。空标识符可用于任何语法需要变量名但程序逻辑不需要的时候, 例如, 在循环里,丢弃不需要的循环索引, 保留元素值。大多数的Go程序员都会像上面这样使用`range``_``echo`程序,因为隐式地而非显地索引os.Args容易写对。
`echo`的这个版本使用一条短变量声明来声明并初始化`s``seps`,也可以将这两个变量分开声明,声明一个变量有好几种方式,下面这些都等价: