GO语言数组,切片,MAP总结

数组

数组是具有相同唯一类型的一组已编号且长度固定的数据项序列,这种类型可以是任意的原始类型例如整形、字符串或者自定义类型。
数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界(下标在合法范围之外),则触发访问越界,会panic。
数组是值类型,赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。

数组声明

var 数组变量名 [元素数量]元素类型
var a [3]int  //声明一个长度为3的整形数组
var city = [...]string{"北京", "上海", "深圳"} //声明一个可变长度的字符串类型数组并且初始化

数组定义必须指定长度。
让编译器根据初始值的个数自行推断数组的长度...

切片

切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。
切片是一个引用类型,它的内部结构包含地址、长度和容量。

切片声明

var 变量名称[]元素类型
var a []string              //声明一个字符串切片
var b = []int{}             //声明一个整型切片并初始化
var c = []bool{false, true} //声明一个布尔切片并初始化

使用make()函数构造切片

make([]元素类型, 切片中元素的数量, 切片的容量)
s := make([]int, 2, 10)

切片不需要指定长度。
切片之间是不能比较,只能和nil比较!

map

map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。map是无序的。

map声明

map[键类型]值类型
make(map[KeyType]ValueType, [cap])
其中cap表示map的容量,该参数不是必须的

三种声明方式

//第一种声明
var test1 map[string]string
//在使用map前,需要先make,make的作用就是给map分配数据空间
test1 = make(map[string]string, 10) 
test1["one"] = "php"
//第二种声明
test2 := make(map[string]string)
test1["one"] = "php"
//第三种声明
test3 := map[string]string{
    "one" : "php",
}
posted @ 2019-08-16 15:34  我是一条最咸的咸鱼  阅读(2334)  评论(0编辑  收藏  举报
返回顶部