在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
用go写了几个应用之后,对它的几个类型理解得可以说也比较到位。
数组
切片数组的兄弟slice(切片),它是go中最常用到的类型,因为它是指针,而且没长度的限制,可以随时往里面加数据。所以它的性能不仅比数组高,而且更灵活。其实slice的数据结构里面包含了两个列表:一个是数组,一个是指向这个数组的指针。当声明一个slice时,go会为数组分配一定的空间,当这个数组被填满后,又会分配一个元素的空间。而这个指向数组的指针则会维护三个数据,指针(point)、数组空间(room)和数组中有值的个数(num)。当room=num时,就是增加一个新的元素空间。
mapgo的map类型跟python的字典几乎一样,都是key-value结构,是一个哈希表,但它的性能跟python比起来,有很大的区别,使用时要明白数据的大小范围,可以参考这篇文章:http://monnand.me/p/golang-map-bench/zhCN channel go里面有channel类型是go语言与众不同的地方,也是它的特色类型,它提供了一种机制,在两个并发执行的函数之间进行同步,并通过传递(与该信道元素类型相符的)值来进行通信。事实上,可以认为 channel 是一个管道或者先进先出队列,非常简单且轻量。信道是引用类型,需要使用 |
请发表评论