1.数组、切片
数组的长度是固定的,切片的长度是可变长的
数组的长度在声明时就必须给定,并且之后不会再变化,数组的长度是其类型的一部分,比如[1]string和[2]string 不是相同的数组类型.
切片可以看作是对数组的封装,每一个切片的底层的数据结构一定包含一个数组,数组可以被叫做一个切片的底层数组,切片可以看作是对数组某个连续片段的引用.
GO的引用类型:切片,通道,字典,函数类型.
GO的值类型 : 数组,基础数据类型,结构体类型
GO中传的是值还是引用,看类型就可以区分.
2.len 、cap函数
可以使用len取得到数组和切片的大小和容量,数组的大小等于容量,切片的容量大于等于大小.
3.example
package main
import "fmt"
func main() {
s1 := make([]int, 5)
fmt.Printf("The length of s1: %d
", len(s1))
fmt.Printf("The capacity of s1: %d
", cap(s1))
fmt.Printf("The value of s1: %d
", s1)
s2 := make([]int, 5, 8)
fmt.Printf("The length of s2: %d
", len(s2))
fmt.Printf("The capacity of s2: %d
", cap(s2))
fmt.Printf("The value of s2: %d
", s2)
}
执行结果:
The length of s1:5
The capacity of s1:5
The value of s1:[0 0 0 0 0]
The length of s2:5
The capacity of s2:8
The value of s2:[0 0 0 0 0 ]