昨天完成了第一篇的笔记,由于本人的能力有限只能写了一部分,到了switch语句就草草结束了。其实写笔记也是对已学内容的一个回顾与复习,笔记的写作对于自身的发展与提高也是非常有用的。今天的这篇笔记继续上篇的内容,继续go语言的基础语法。
在Go语言中,数组的声明需要指定元素类型及元素个数。例如
var a[10] int64
在Go语言中,对默认的数组初始化,初始值为0,也可以用初始化对数组进行赋值,如:
var a =[3]int{1,2,3}
当然也可以用
a :=[3]{1,2,3}得到相同的结果。在Go语言中,也有二维数组、三维数组等。在青训营的课程中,展示的代码中有出现二维数组的案例,但是主讲人没有提及,在这里进行一个补充。在声明时与普通的数组一样,可以用var进行声明,只需加一个"[]"即可,如
var a=[][]int
对数组的赋值也十分简单,简单做一个示例:
a:=[2][2] string{} a[0][0]="123" a[0][1]="321" a[1][0]="231" a[1][1]="213"
接下来是较为重要的部分————切片。由于Go语言中数组的长度不可以改变,在特定场景中就不太适用,于是Go语言中有了切片的出现。与数组相比,切片的长度是不固定的,可以追加元素,在追加时可能使切片的容量增大,也可以把切片理解为一个“动态的数组”。在go语言中,使用make()就可以创建切片。如创建一个有三个元素的切片的代码为:
a:=make([]string,3)
给这切片赋值也跟数组相同,可以批量赋值也可以一个个依次赋值,代码如下:
a[0]="a" a[1]="b" a[2]="c"
当我们进行输出时,与先前有些许的不同。例如输出a[1]的内容:
fmt.println("get:",a[1])
而要输出当前数组的长度时,也有不同的地方:
fmt,println("len:",len(a))
当然前面说到切片比数组更强大的地方是可以追加元素,我们可以使用append语句对元素进行追加,代码如下:
a=append(a,"d")
要是想要追加两个及以上的元素也是可以的,只需在元素后加“,”即可。
在青训营的课程中也提到了可以“复制”一个切片出来,代码如下:
b:= make([]string,len(a)) copy(b,a)
此时的b数组里的内容就是a数组里的内容了。
与其他语言类似,Go语言中也可以对切片进行截取。其操作方法也和其他编程语言大致相同。我们以一个a数组{a,b,c,d,e,f}为例,当我们要截取切片的“b,c,d”这段内容,只需
fmt.println(a[1:4])
需要注意的是,这里截取的位置是左边取到右边不取,也就是“左闭右开”。假如要从头开始取或是从一个位置取到尾部,遵循的也是这个原则。例如:
fmt.println(a[3:])
fmt.println(a[:5])
第一个代码取到的是“d,e,f”,而第二个代码取到的则是“a,b,c,d,e”。还是有些许区别的。