golang 的数组 切片 映射,学习笔记

1/内部实现
GO 的数组是个长度固定的数据类型,存储有想用类型的袁术的连续块,存储类型可以是内置类型(整型,字符串),也可以是某种结构类型
数组因为他占用的内存是连续分配的.由于内存连续,CPU 能把正在使用的数据缓存更久时间.而且内存连续很容易计算索引,可以快速迭代数组的所有元素.数组的类型信息可以提供每次访问一个元素时需要在内存中移动的距离,既然每个元素类型相同,而且是连续分配的内存,那么可以以固定速度索引数据中的任意数据,速度非常快

2/声明数组
var array [5]int (array:数组名,5:元素个数,int:数据类型)
一旦声明,数组的数据类型与长度就不能改变,声明数组初始化是,数组内的每个元素都初始化为对应类型的零值(GO 语言中声明变量,总会使用对应类型的零值来对变量进行初始化)
array := […]int{10,20,30,40,50},声明一个整型数组,用具体值初始化每个袁术,容量由初始化值的数量决定
array := [5]int{1:10,2:20}声明有五个袁术的数组,用具体值初始化索引 为 1 和 2 的元素,其余保持零值
编译器会阻止类型不同的数组互相赋值
复制数组指针,只会复制指针的值,不会复制指针所指向的值

声明二维数组 var array [4][2]int{{1,2},{3,4},{5,6},{7,8}}  (声明一个二维整型数组,两个维度分别存储 4 个元素和两个元素,使用数组字面量来声明并初始化)

3/切片的内部实现和基础功能
一种数据结构,便于使用和管理数据集合,围绕动态数组的概念构建,可按需自动增长缩小,内置函数 append 控制动态增长,底层内存也是连续块中分配,能获得索引,迭代以及垃圾回收优化
切片是一个很小的对象,对底层数组进行了抽象,并提供相关操作方法
切片有三个字段的数据结构,分别是 1/指向底层数组的指针,2/切片访问的元素的个数(长度),3/允许增长到的元素个数(容量)
创建切片 slice := make([]string,5),创建一个字符串切片,长度和容量都是 5 个元素

通过切片字面量来声明切片
slice := []string{"red","blue","green","yellow","pink"},(创建字符串切片,长度和用量都是 5,通过切片字面量声明切片)
使用索引声明切片
slice := []string{99:""},(创建字符串切片,使用空字符串初始化第 100 个元素)

声明数组和声明切片不同
//创建有三个元素的整型数组
array := [3]int{10,20,30}
//创建长度和容量都是三的整型切片
slice := []int{10,20,30}

nil 和空切片
只要在声明时不做任何初始化,就会创建nil 切片

创建 nil 整型切片
var slice []int
声明空切片
slice := make([]int,0)
使用切片字面量创建空的整型切片
slice := []int{}

未完,待续!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值