go程序设计语言01_02入门之命令行参数
所属分类 go
浏览量 883
os包以跨平台的方式,提供了一些与操作系统交互的函数和变量
程序的命令行参数 os.Args
字符串(string)的切片(slice)
slice 动态数组 用法类似python
切片s当作数组元素序列,序列的长度动态变化
用s[i]访问单个元素,用s[m:n]获取子序列
区间索引 左闭右开 区间包括第一个索引元素,不包括最后一个
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:len(os.Args)] 可写成 os.Args[1:]
package main
import (
"fmt"
"os"
)
func main() {
var s, sep string
for i := 1; i < len(os.Args); i++ {
// s = s + sep + os.Args[i]
s += sep + os.Args[i]
sep = " "
}
fmt.Println(s)
}
go run echo1.go a b c
go build echo1.go
./build x y z
var声明定义了两个string类型的变量s和sep
变量会在声明时直接初始化,
如果变量没有显式初始化,则被隐式地赋予其类型的零值(zero value),
数值类型是0,字符串类型是空字符串""
循环索引变量i在for循环的第一部分中定义
符号:=是短变量声明(short variable declaration)的一部分,
这是定义一个或多个变量并根据它们的初始值为这些变量赋予适当类型的语句
Go语言只有for循环这一种循环语句
for initialization; condition; post {
// zero or more statements
}
for循环三个部分不需括号包围
大括号强制要求,左大括号必须和post语句在同一行
initialization语句是可选的,在循环开始前执行
initalization如果存在,必须是一条简单语句(simple statement),
即 短变量声明、自增语句、赋值语句或函数调用
condition是一个布尔表达式(boolean expression),其值在每次循环迭代开始时计算
如果为true则执行循环体语句
post语句在循环体执行结束后执行,之后再次对condition求值
condition值为false时,循环结束。
for循环的这三个部分每个都可以省略,如果省略initialization和post,分号也可以省略
// a traditional "while" loop
for condition {
// ...
}
condition也省略
// a traditional infinite loop
for {
// ...
}
for循环的另一种形式,在某种数据类型的区间(range)上遍历,如字符串或切片
echo2
// Echo2 prints its command-line arguments.
package main
import (
"fmt"
"os"
)
func main() {
s, sep := "", ""
for _, arg := range os.Args[1:] {
s += sep + arg
sep = " "
}
fmt.Println(s)
}
每次循环迭代,range产生一对值 索引以及在元素值
Go语言不允许使用无用的局部变量(local variables),会导致编译错误
用空标识符(blank identifier) _(下划线)
在循环里 丢弃不需要的循环索引
以下等价
s := ""
var s string
var s = ""
var s string = ""
echo3
package main
import (
"fmt"
"os"
"strings"
)
func main() {
fmt.Println(strings.Join(os.Args[1:], " "))
}
fmt.Println(os.Args[1:])
不 import strings ,报错 undefined: strings
上一篇
下一篇
go程序设计语言01_01入门之hello
GO各版本新特性
SQLite 为何一直坚持用 C 语言
C程序设计语言笔记_00_序及引言
Go by Example
Python3 in 1 Hour