GO语言补充(二)
来源:互联网 发布:日文游戏翻译软件 编辑:程序博客网 时间:2024/05/29 04:48
GO语言补充(二)
切片Slice
其本身并不是数组,它指向底层的数组作为变长数组的替代方案,可以关联底层数组的局部或全部为引用类型可以直接创建或从底层数组获取生成使用len()获取元素个数,cap()获取容量一般使用make()创建如果多个slice指向相同底层数组,其中一个的值改变会影响全部make([]T, len, cap)其中cap可以省略,则和len的值相同len表示存数的元素个数,cap表示容量
注意:“[]”中既没有数字,也没有“…”,则表示声明的是一个slice,切片类型。
这里,讲到切片的范围,又要注意外国人的脑回沟一般是“左闭右开”的。就是“[ … )”的样子。
Slice与底层数组的对应关系
注意,切片包含的是len,长度和cap,容量。
长度,就是声明的范围,容量就是从开始处到末尾为止的元素个数。
Reslice
Reslice时索引以被slice的切片为准索引不可以超过被slice的切片的容量cap()值索引越界不会导致底层数组的重新分配而是引发错误
取已知切片的内容时,取得是切片的相对位置。
Append
可以在slice尾部追加元素可以将一个slice追加在另一个slice尾部如果最终长度未超过追加到slice的容量则返回原始slice如果超过追加到的slice的容量则将重新分配数组并拷贝原始数据
这里,就开始很神奇的事情了。
进行比较:
超过容量,重新分配内存,而不是原来数据的引用。
Copy
map
类似其它语言中的哈希表或者字典,以key-value形式存储数据Key必须是支持==或!=比较运算的类型,不可以是函数、map或sliceMap查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍Map使用make()创建,支持 := 这种简写方式make([keyType]valueType, cap),cap表示容量,可省略超出容量时会自动扩容,但尽量提供一个合理的初始值使用len()获取元素个数键值对不存在时自动添加,使用delete()删除某键值对使用 for range 对map和slice进行迭代操作
简单map的操作
复杂map的操作:
总结,多层map的时候,一定要注意每一层都成功初始化了之后再使用。
迭代操作:
在遍历slice的时候,有i,v可以分别获得元素的下标和元素值的拷贝。如果不需要的时候可以用“_”代替掉;
在遍历map的时候,有k,v可以分别获得map中的key值和元素值的value的拷贝。如果不需要的时候可以用“_”代替掉。
注意,GO语言中的map和C++中的map不一样,他是无序的。
阅读全文
0 0
- GO语言补充(二)
- GO语言补充(一)
- GO语言补充(三)
- go语言(二)变量
- Go 编程语言入门教程 (二)
- Go语言并发编程(二)
- Go语言圣经(中文版)读书笔记(二)
- Go语言学习之signal(二)
- GO语言学习二(基础)
- go语言(二):基本知识
- Go学习笔记(二)初试Go第一个Go语言
- go语言基础学习二
- GO语言学习笔记(二)
- Go语言学习(二)常量
- GO语言学习笔记二
- go语言之beego框架orm的使用(二)
- Go语言的接口和实现类初探(二)
- go语言实现设计模式(二):简易工厂
- 购物车二级列表适配器
- jvm探秘十一:虚拟机执行子系统之方法调用
- 17. Letter Combinations of a Phone Number
- Java IO的个人学习笔记(1)
- 数据库基本概念
- GO语言补充(二)
- leetcode 546. Remove Boxes 很复杂的DP
- 算法爱好者——算法题:最大间距 ? 待解决
- 修改pip镜像
- 【微信小程序】自定义组件
- 兄弟连学Python(5)—Python经典小程序(2)
- JQuery 过滤选择器
- bzoj 4591: [Shoi2015]超能粒子炮·改 Lucas定理+组合数学
- 常用类(未完)