Go 语法概览 Part 2
这是 Go 学习笔记的第二篇,继续对 Go 的语法进行一个概览,你可以在这里看到第一篇。
本篇将聚焦于 Go 语言的数组,切片,字典以及函数。
1 数组
Array(数组)是一个由数个相同类型的元素构成的序列。例如:
1 |
|
数组的长度是数组类型的一部分。拥有相同元素类型的数组,如果长度不同,那么就不是相同的数组。数组的长度一经声明,就不可以再改变了。
声明语句的右半部分也可以这么写:
1 |
|
2 切片
slice(切片)对数组的一种包装形式,被它包装的数组被叫做切片的底层数组。它表述了底层数组中的一个连续片段。
声明形式如下:
1 |
|
切片的类型不包含长度信息,因此拥有相同元素类型的切片,他们的类型就是相同的。
切片的长度可变,零值为 nil,当处于零值时,长度和容量都是0。其中,切片的容量是指在没有更换底层数组时长度的最大值。
切片的初始化可以通过内建函数 make 进行,通过使用 make 能以很短的代码初始化一个长度很大的切片。
如:
1 |
|
3 字典
map(字典)是 hash table 的一个实现。map 是 key-value 形式元素对的一个无序集合。map 中的每个索引都是独一无二的。
map 的声明如下所示:
1 |
|
map 的零值为 nil,零值的长度是 0。map 的长度表明了其中所含有的 key-value 对的数量。
map 数据的添加与修改 :
1 |
|
删除:
1 |
|
查询:
1 |
|
4 函数
函数在 Go 中是作为一等公民形式存在的,可以将函数作为一个值来传递和使用。
一个函数的声明通常包括关键字 func, 函数名,由圆括号包围的参数列表和结果列表,以及花括号包围的函数体。如下:
1 |
|
为了辨别不同的函数,需要使用函数签名,函数签名是函数参数列表以及结果列表的统称。函数签名不包括参数和结果的名称。
如果两个函数参数列表和结果列表的顺序以及类型相同,那么,这两个函数实现了同一个函数类型。
函数也可以用来实现闭包。所谓闭包,就是将某个函数类型作为闭包函数的一个参数,在调用时根据需求传动态传入函数,产生不同的行为。闭包函数在定义时并不会知道某个函数类型的具体实现,只有在调用时才会知道。如:
1 |
|