slice definition

切片语法类似于没有定义长度的数组语法

  1. package main
  2. import "fmt"
  3. func main() {
  4. var arr = []bool{true, false, true}
  5. slice := arr[:]
  6. fmt.Println(slice)
  7. }

definite

  1. package main
  2. import "fmt"
  3. func main() {
  4. //切片 包括数组 在输出上都会有 [ 内容 ]
  5. // 切片的定义 : 类型 初始化值
  6. slice := []struct {
  7. id int
  8. name string
  9. }{
  10. {1, "张三"},
  11. {2, "李四"},
  12. }
  13. slice1 := []struct {
  14. id int
  15. name string
  16. }{}
  17. fmt.Println(slice)
  18. fmt.Println(slice1)
  19. //使用make 定义 : 类型 初始化长度
  20. slice2 := make([]struct {
  21. id int
  22. name string
  23. }, 4)
  24. fmt.Println(slice2)
  25. }

append

当切片append的结果是一个原切片所有元素加上新添加元素的切片,但是当底层数组太小,不足以容纳所有给定的值时,它就会分配一个更大的数组,返回的切片会指向这个新分配的数组。

map definition

map的定义语法和结构体语法类似,只是map必须有键名
make 函数会返回给定类型的映射,并将其初始化备用

definite

  1. package main
  2. import "fmt"
  3. type Vertex struct {
  4. Id int
  5. Name string
  6. }
  7. func main() {
  8. // 不用make,直接在定义时就初始化
  9. var map0 = map[bool]Vertex{
  10. //键名是什么类型,赋值就怎么写
  11. // 比如 是int 就直接写 数字 ,是string就直接写 "xx"
  12. true: Vertex{1, "张三"},
  13. false: Vertex{2, "李四"}, //当然这里Vertex类型可以省略
  14. }
  15. fmt.Println(map0)
  16. //map 必须有键名,这里的键名就是[]里的类型
  17. map1 := make(map[int]Vertex)
  18. map1[1] = Vertex{123, "Mike"} //这里还必须指明Vertex
  19. fmt.Println(map1) //output: map[1:{123 Mike}]
  20. //同理: map 的其他写法
  21. var map2 map[string]Vertex
  22. map2 = make(map[string]Vertex)
  23. map2["hello"] = Vertex{111, "Jack"}
  24. }

delete

双赋值表达式