002 go array和slice的区别
相同点
都是属于集合类的类型,用来存储同一种类型的数据或者元素
不同点
数组的长度固定,数组是值类型(值类型有基本数据类型,结构体类型),数组的空余位置用0填补,不允许数组越界。
slice的值长度可变,属于引用类型(引用类型:字典类型,通道类型,函数类型)
切片是引用传递,所以它们不需要使用额外的内存并且比使用数组更有效率。
如果传递的是引用类型,那么就是“传引用”,如果传递的是值类型,那么就是“传值”(会把以前的数据复制一遍)
数组长度在声明的时候就必须给定,并且之后不会再改变。
slice类型的字面量中只有元素类型,没有长度。切片长度可以自动随着元素数量的增长而增长,但不会随着元素数量的减少而减少。
数组的容量=长度,不可改变。
go中有没有数组
有
golang 中的数组
1.数组的创建
package main
import "fmt"
func main() {
var arr1 = [...]int{
1, 2, 3, 4} //[...]默认为元素的数量即为数组的长度
fmt.Println(len(arr1)) //4
arr1[4] = 5 //panic 数组越界
fmt.Println(arr1)
var arr2 = [10]int{
1, 2, 3, 4}
fmt.Println