首先为什么要讲go的指针和切片放在一起? 因为go指针和切片都是引用类型 引用类型就是说切片和指针保存的只是内存的地址,而不是具体的值,效率在大数据读取方面效率会高很多. 1.怎么定义一个切片 方法1: var a []int a = make([]int, 0) //给切片赋值 a[0] = 100 注意,这种方式需要对切片进行初始化,否者这个切片不能被使用 方法2: var a []int = make([]int, len) 切片的使用和数组…
数据(array)与切片(slice) 数组声明: ArrayType = "[" ArrayLength "]" ElementType . 例如: var a [32] int var b [3][5] int 在Go和C中,数组的工作方式有几个重要的差别.在Go中, (1)数组是值类型.将一个数组赋值给另一个,会拷贝所有的元素. (2) 如果你给函数传递一个数组,其将收到一个数组的拷贝,而不是它的指针. (3)数组的大小是其类型的一部分,类型[10]i…
初始化:数组需要指定大小,不指定也会根据初始化的自动推算出大小,不可改变 数组: a := [...],,} a := [],,} 切片: a:= [],,} a := make([]) a := make([], ) slice的数据结构: go源码slice的数据结构定义: type slice struct { array unsafe.Pointer len int cap int } 一个指向真实 array 地址的指针 ptr ,slice 的长度 len 和容量 cap 函数传递:…
先记录代码 package main import "fmt" /* 声明指针 *T 是指向类型T的值的指针变量的类型 */ func main() { //b := 255 //var a *int = &b // a是int指针,指向b的内存地址 //fmt.Printf("Type of is:%T\n", a) //fmt.Println("address of b is", a) // //a := 22 //var b *in…