在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一 数组(array) go语言中的数组是固定长度的。使用前必须指定数组长度。 go语言中数组是值类型。如果将数组赋值给另一个数组或者方法中参数使用都是复制一份,方法中使用可以使用指针传递地址。 声明: var arrayName = [arraySize]dataType{xxx,xxx,xxx....} //定义全局数组 arr := [...]int{1,2,3,4,5} 多维数组: //初始化: var a = [3][4]int{[4]int{1,2,3},[4]int{1,2,3},[4]int{1,2}} //不足补0 //创建数组声明changdu var aaa1 = [5]int{1,2,3,4} fmt.Println(aaa1) //创建数组不声明长度 var aaa2 = [...]int{1111,2222,3333,4444,55555,6666} fmt.Println(aaa2) //创建数组并初始化其中部分 var aaa3 = [5]string{1:"aaa",2:"bbb"} fmt.Println(aaa3)
切片(slice) 指向底层数组的指针。不需要定义长度。和数组在写法上的区别就是不需要指定长度 对比: v := [2]string{"123","123"} //数组 v := []string{"123","123"} //切片
默念:数组有长度,切片没长度,数组有长度,切片没长度...... 如果多个slice指向同一个底层数组,其中一个改变了数组的值,则其他如果包括这个key的值也会改变 如果slice增加时,导致数组超长,则会再次分配一个新的数组。其他slice可能就会指向这个新的底层数组,这个前一个改变了底层数组的值可能是第一个底层数组,所以第二个slice的key 指向的是第二个底层数组。这点有点混淆。来自无闻视频教程中讲解。 方法: append(arr,1,2,3,4,5) //将1,2,3,4,5追加到arr中 slice := arr[开始:结束] //指向数组中开始到结束的 copy(arr1,arr2) //用arr2中的值替代arr1中的值,通过key 对应的代替 copy(arr1[开始:结束],arr2[开始:结束]) 指定替换部位
map: 是一个key=>value的hash结构 key是除func、slice、map、array外的类型 声明初始化 m := map[string]string{} 赋值一个 m["key1"] = "val1" 取值 v := m["key1"] 删除一个值 d := delete(m,"key1") 取值的时候可以返回两个值。另一个可以判断是否存在 val,isset := m[2] struct(结构体) 个人理解:一种类型; 例如: type person{ Name string ages int } 使用该类型需要定义该类型中两个属性
所有值传递不会改变内存中的值,只有引用类型该可以改变内存中的值 内建函数 make 用来为 slice,map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),第一个参数也是一个类型而不是一个值 func make(t Type,size IntegerType) Type make slice var slice_ []int = make([]int,5,10) fmt.Println(slice_) var slice_1 []int = make([]int,5) fmt.Println(slice_1) var slice_2 []int = []int{1,2} fmt.Println(slice_2) 打印结果: [0 0 0 0 0] [0 0 0 0 0] [1,2] make map var m_ map[string]int = make(map[string]int) m_["one"] = 1 fmt.Println(m_) var m map[string]int = map[string]int{"1":1} m["2"] = 2 fmt.Println(m) 打印结果: map[one:1] map[1:1 2:2] mak channel var c = make(chan bool)
|
请发表评论