go的一些语法有点晦涩,这些很基础,做一下笔记
数组
数组声明
#声明一个包含5个元素的整型数组
var array [5]int
#声明一个包含5个元素的字符串数组
var array1 [5]string
#声明一个整型数组,不限制
var array [...]int
数组声明初始化
#声明一个包含5个元素的整型数组
#用具体值初始化每个元素
array := [5]int{10,20,30,40,50}
array := [...]int{10,20,30,40,50}
切片
切片的声明
#创建一个字符串切片,长度和容量都是5个元素
slice := make([]string,5)
#创建一个整型切片,其长度为3个元素,容量为5个元素,不允许创建容量小于长度的切片
slice := make([]int,3,5)
#创建字符串切片
slice := []string{"red","blue"}
#创建nil整型切片
var slice []int
#使用make创建空的整型切片
slice := make([]int,0)
#使用切片字面量创建空的整型切片
slice := []int{}
如果在[]运算符里指定一个值,那么创建的就是数组而不是切片
#切片概念是只包含左边元素不包含右边元素
#可以把容量当做成总长度减去左指针走过的元素值
slice := []int{10, 20, 30, 40, 50}
slice[1:3] 长度为2:slice[1]和slice[2]
切片的追加
append操作完,newSlice拥有一个全新的底层数组,这个数组的容量是原来的两倍
slice := []int{10, 20, 30, 40}
newSlice := append(slice, 50)
cap(newSlice) #8
len(newSlice) #5
切片操作并不复制切片指向的元素。它创建一个新的切片并复用原来
切片的底层数组。 这使得切片操作和数组索引一样高效。因此,通过
一个新切片修改元素会影响到原始切片的对应元素。
切片是一维的,和数组一样,可以组合多个切片形成多维切片
slice := [][]int{{10}, {100, 200}}
切片函数传递是值传递
映射
映射是一个存储键值对无序集合
#创建一个映射,键类型是string,值得类型是int
dict := make(map[string]int)
#创建映射时,更常用的方法是使用映射字面量
dict := map[string]string{"Red": "#da1337", "Orange": "#e95a22"}
#删除一项
delete(map,key)
赋值
color := make(map[string]int)
color := map[string]int 错误
color["red"] = 3
网友评论