Go语言程序设计:集合类型
Go 集合
本章主要介绍了以下类型:
值,指针以及引用的类型。除此之外,还包括了Go语言的一些内置类型:数组、切片和映射。
通常情况下,变量持有相应的值。值在传递给函数或者方法时会被复制一次,这对布尔类型或者数值类型来说非常廉价。按值传递字符串也很廉价,因为字符串不可变。但是,如果修改一个传入的字符串的话,代价可能会很大。
在Go语言中,数组是按值传递的。幸运的是,我们不常用数组,而是用切片。
对于指针来说,用法跟C是类似的。既有&取地址操作符,也有*解引用操作符。其基本的用法与C指针类似。在生成一个结构体的实例时,我们可以用new(Type)来生成这个实例的指针,或者用&type{}的方法来生成指针。其中后者还可以进行初始化。
除了这两者之外,还有引用类型。引用类型的传递也很廉价,语法跟值一样。
映射和切片都是引用,因此,我们对其的任何修改都是可见的。
除了映射和切片之外,通道、函数和方法都是引用类型。引用没有什么特殊的语法,它跟值的使用是一样的。
数组和切片
Go语言的数组是定长的,且类型相同。创建的语法如下:
[length]type
[N]type{value1, ...., valueN}
[...]