这是我参与「第五届青训营 」伴学笔记创作活动的第 1 天
今天主要学习了Go语言的背景,开发环境的搭建、基础语法以及一些常用标准库的用法,并且动手实践了3个go的项目实战。
Go语言的代码通过包(package)组织,包类似于其它语言里的库(libraries)或者模块(modules)。main包比较特殊。它定义了一个独立可执行的程序,而不是一个库。在main里的main 函数 也很特殊,它是整个程序执行时的入口。Go语言只有for循环这一种循环语句。for循环三个部分不需括号包围。大括号强制要求,左大括号必须和post语句在同一行。for循环的另一种形式,在某种数据类型的区间(range)上遍历,如字符串或切片,每次循环迭代,range产生一对值;索引以及在该索引处的元素值。对于switch多路选择,Go语言并不需要显式地在每一个case后写break,语言默认执行完case后的逻辑语句会自动退出。当然了,如果想要相邻的几个case都执行同一逻辑的话,需要自己显式地写上一个fallthrough语句来覆盖这种默认行为。Go语言里的switch还可以不带操作对象(译注:switch不带操作对象时默认用true值代替,然后将每个case的表达式和true值进行比较);可以直接罗列多种条件,像其它语言里面的多个if else一样。map存储了键/值(key/value)的集合,对集合元素,提供常数时间的存、取或测试操作。键可以是任意类型,只要其值能用==运算符比较,最常见的例子是字符串;值则可以是任意类型。需要用内置函数make创建空map。os.Args变量是一个字符串(string)的切片(slice),用s[i]访问单个元素,用s[m:n]获取子序列。序列的元素数目为len(s)。和大多数编程语言类似,区间索引时,Go言里也采用左闭右开形式,即,区间包括第一个索引元素,不包括最后一个,因为这样可以简化逻辑。比如s[m:n]这个切片,0 ≤ m ≤ n ≤ len(s),包含n-m个元素。