四、包/函数
4.1、命令行参数
os.Args变量是一个字符串(string)的切片(slice)
s[i] 访问单个元素
s[m:n] 获取子序列
序列的元素数目为len(s)
os.Args[1:] 从1:len(os.Args)
os.Args[:len(os.Args)) 从0:到len(os.Args)
4.2、Println
是一个基础函数,可以打印 以空格间隔的一个或多个值,并在最后添加一个换行符,从而输出一整行。
4.3、main 包
比较特殊。它定义了一个独立可执行的程序,而不是一个库。
在 main 里的 main 函 数 也很特殊,它是整个程序执行时的入口。
main 函数所做 的事情就是程序做的。
当然, main 函数一般调用其它包里的函数完成很多工作, 比如,fmt.Println 。
4.4、counts := make(map[string]int)
counts := make(map[string]int)
map存储了键/值(key/value)的集合,对集合元素,提供常数时间的存、取或测试操作。
键 可以是任意类型,只要其值能用 == 运算符比较,最常见的例子是字符串;
值则可以是任意类 型。这个例子中的键是字符串,值是整数。
内置函数 make 创建空 map
4.5、fmt.
4.5.1、fmt.Printf("%d\t%s\n", n, line)
4.5.2、fmt.Sprintf("while reading %s: %v", url, err)
fmt.Sprintf("while reading %s: %v", url, err)
fmt.Sprintf("%.2fs %7d %s", secs, nbytes, url)
fmt.Fprintf(w, "URL.Path = %q\n", r.URL.Path)
fmt.Fprintf(w, "%s %s %s\n", r.Method, r.URL, r.Proto)
4.6、if err != nil
f, err := os.Open(arg)
if err != nil {
fmt.Fprintf(os.Stderr, "dup2: %v\n", err)
os.Open 返回的第二个值是内置 error 类型的值。
如果 err 等于内置值 nil (相当于 其它语言里的NULL)