一、go中的容器

1、array 数组【指定长度】
var 数组变量名 [元素数量]Type //数组声明
q := [...]int{1, 2, 3}
var r [3]int = [3]int{1, 2}
var array_name [size1][size2]...[sizen] array_type //多维数组。a,array_type 为数组的类型,size1、size2 等等为数组每一维度的长度。
var array [2][2]int // 声明一个 2×2 的二维整型数组

2、slice 切片【不指定长度】

slice [开始位置 : 结束位置]
mp1 := make(map[int][]int)
var strList []string // 声明字符串切片
var numList []int // 声明整型切片
var numListEmpty = []int{} // 声明一个空切片
make( []Type, size, cap )// 动态地创建一个切片,可以使用 make() 内建函数
var slice [][]int //声明一个二维切片
slice = [][]int{{10}, {100, 200}} //为二维切片赋值

3、map 映射

var mapname map[string]int //正常定义map,string是key类型,int是value类型。int前没空格。
make(map[keytype]valuetype, cap) //map 可以根据新增的 key-value 动态的伸缩,因此它不存在固定长度或者最大限制
mp1 := make(map[int][]int)  //用切片作为map的value。value类型是 []int。**没有指定长度是切片,指定长度是数组!**
mp2 := make(map[int]*[]int) //value类型是 *[]int
Go语言map的多键索引——多个数值条件可以同时查询

参考:https://www.cdsy.xyz/computer/programme/golang/20210307/cd161507549210566.html
sync.Map // 在并发情况下,只读是线程安全的,同时读写是线程不安全的。

4、list 列表

变量名 := list.New() //通过 container/list 包的 New() 函数初始化 list
var 变量名 list.List //通过 var 关键字声明初始化 list

5、nil 空值/零值
nil 不能比较,不管二者是否是相同类型
nil 不是关键字或保留字
nil 没有默认类型
nil 是 map、slice、pointer、channel、func、interface 的零值
不同类型 nil 的指针是一样的
不同类型的 nil 值占用的内存大小可能是不一样的

参考:
http://c.biancheng.net/view/31.html

二、容器作为参数

posted on 2022-09-20 19:16  西伯尔  阅读(62)  评论(0编辑  收藏  举报