首先為什么要講go的指針和切片放在一起?
因為go指針和切片都是引用類型
引用類型就是說切片和指針保存的只是內存的地址,而不是具體的值,效率在大數據讀取方面效率會高很多。
1、怎么定義一個切片
方法1:
var a []int
a = make([]int, 0)
//給切片賦值
a[0] = 100
注意,這種方式需要對切片進行初始化,否者這個切片不能被使用
方法2:
var a []int = make([]int, len)
切片的使用和數組一樣
a[0] = 100
fmt.Println(a)
2、怎么定義一個指針
方法1
var p *string
p = new(string)
*p = "abc"
方法2
var str string = "hello"
p = &str
下面是一個例子
func test() { //定義一個切片 var a []int //給a分配一個內存(初始化) a = make([]int, 10) //給切片賦值 a[0] = 100 fmt.Println(a) //定義一個切片類型的指針 var p *[]int //給指針初始化 p = new([]int) //給切片初始化,分配一個切片內存 (*p) = make([]int, 10) //給切片賦值 (*p)[0] = 100 fmt.Println(p) p = &a (*p)[0] = 1000
(*p)[1] = 10
(*p)[2] = 11
(*p)[3] = 12
(*p)[4] = 13
fmt.Println(a)
fmt.Printf("len is %d\n", len(a))
for i := 0; i < len(a); i++ {
fmt.Printf("num is %d\n", a[i])
}
}
func main() {
test()
}
這個例子一定要注意的是當指針賦值的是切片類型,那么指針和切片都需要做初始化,否則會報錯