slice definition
切片语法类似于没有定义长度的数组语法
package mainimport "fmt"func main() {var arr = []bool{true, false, true}slice := arr[:]fmt.Println(slice)}
definite
package mainimport "fmt"func main() {//切片 包括数组 在输出上都会有 [ 内容 ]// 切片的定义 : 类型 初始化值slice := []struct {id intname string}{{1, "张三"},{2, "李四"},}slice1 := []struct {id intname string}{}fmt.Println(slice)fmt.Println(slice1)//使用make 定义 : 类型 初始化长度slice2 := make([]struct {id intname string}, 4)fmt.Println(slice2)}
append
当切片append的结果是一个原切片所有元素加上新添加元素的切片,但是当底层数组太小,不足以容纳所有给定的值时,它就会分配一个更大的数组,返回的切片会指向这个新分配的数组。
map definition
map的定义语法和结构体语法类似,只是map必须有键名
make 函数会返回给定类型的映射,并将其初始化备用
definite
package mainimport "fmt"type Vertex struct {Id intName string}func main() {// 不用make,直接在定义时就初始化var map0 = map[bool]Vertex{//键名是什么类型,赋值就怎么写// 比如 是int 就直接写 数字 ,是string就直接写 "xx"true: Vertex{1, "张三"},false: Vertex{2, "李四"}, //当然这里Vertex类型可以省略}fmt.Println(map0)//map 必须有键名,这里的键名就是[]里的类型map1 := make(map[int]Vertex)map1[1] = Vertex{123, "Mike"} //这里还必须指明Vertexfmt.Println(map1) //output: map[1:{123 Mike}]//同理: map 的其他写法var map2 map[string]Vertexmap2 = make(map[string]Vertex)map2["hello"] = Vertex{111, "Jack"}}
