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