Golang
lynalmost
这个作者很懒,什么都没留下…
展开
-
关于Golang make关键字的二三事
关于Golang make关键字的二三事make的介绍make的作用是初始化内置的数据结构,切片、哈希、管道它的使用方式无非是//初始化切片 s := make([]string, 0, 10)//初始化map(map必须初始化后使用)m := make(map[string]string, 10)make的原理make严格意义上来说是golang提供给开发者的语法糖,在编译期间,make会被替换为具体的特性函数。 case OMAKE: ar原创 2021-04-20 20:36:05 · 1087 阅读 · 1 评论 -
关于Golang数组的要点
关于Golang数组的要点文章目录关于Golang数组的要点初始化要点数组的访问要点总结初始化 a := [3]int{1,2,3} b := [...]int{1,2,3}要点数组在内存中为一片连续空间。数组一旦创建,长度不可变。使用...的方式创建数组,在编译阶段会进行推导,即遍历一次数组,会提前转换为a的形式;运行时没有差别。在编译阶段,当数组长度小于4,则直接在栈中初始化;数组长度大于4,在静态区初始化后,运行时拷贝到栈中。(原因猜测:栈中初始化速度慢)数组的访原创 2021-04-12 14:59:30 · 388 阅读 · 0 评论 -
Golang map 并发读写问题源码分析
map介绍及问题描述map主要用来存储kv数据,其底层使用的是开链法去冲突的hashtable,拥有自动扩容机制。使用map最方便的一点是可以O(1)快速查询(目前slice并没有提供查询接口,只能通过自己写算法实现某个元素是否存在)。map虽然好用,但是可能不适用。但是map有一个非常致命的坑点,在并发场景下,并发读/写都可能会出现fatal error:concurrent map read and map write的错误,刚开始使用map的时候天真的认为只要不对同一个key进行并发操作就行,但原创 2020-08-18 09:10:13 · 2888 阅读 · 0 评论 -
Golang Slice
Slice介绍Slice也叫做切片,是golang中最为常用的一个结构之一,跟数组相比,它更加灵活便利,拥有自动扩容策略,但是也存在着一些比较容易被忽略的坑点,文章会先介绍Slice的基本使用方式,接着会介绍Slice的内部实现,最后会总结一些我遇到过的坑点(这一点可能会持续更新)~使用方式Slice切片初始化slice的初始化和数组的初始化方式特别相似,但是这是两种完全不同的数据结构,数组的容量大小是不允许被调整的。//slice的初始化s2 := []int{}s3 := []int{1,原创 2020-07-09 11:54:53 · 269 阅读 · 0 评论