Go语言作为后起之秀,在语言层面具有语法简洁、执行效率高的特点;相比之下,Java和Python、PHP都显得低效,C++则太过麻烦,而Go则可以做到简单与高效兼顾。
Go语言是主打并发、为并发而生的,其出发点即是瞄准大数据+云计算时代背景下的高并发、分布式应用场景。
可以在不同平台直接编译生成可执行程序,基础内存占用很少,小应用占用几M大型应用占用个几十M就能很好运行,这使得golang可以在树莓派之类的小设备上很好的运行,这一点表现比java要好的多。
slice表示切片(分片),例如对一个数组进行切片,取出数组中的一部分值。在现代编程语言中,slice(切片)几乎成为一种必备特性,它可以从一个数组(列表)中取出任意长度的子数组(列表),为操作数据结构带来非常大的便利性,如python、perl等都支持对数组的slice操作,甚至perl还支持对hash数据结构的slice。
但Go中的slice和这些语言的slice不太一样,前面所说的语言中,slice是一种切片的操作,切片后返回一个新的数据对象。而Go中的slice不仅仅是一种切片动作,还是一种数据结构(就像数组一样)。
Go中的slice依赖于数组,它的底层就是数组,所以数组具有的优点,slice都有。且slice支持可以通过append向slice中追加元素,长度不够时会动态扩展,通过再次slice切片,可以得到得到更小的slice结构,可以迭代、遍历等。
实际上slice是这样的结构:先创建一个有特定长度和数据类型的底层数组,然后从这个底层数组中选取一部分元素,返回这些元素组成的集合(或容器),并将slice指向集合中的第一个元素。换句话说,slice自身维护了一个指针属性,指向它底层数组中的某些元素的集合。(著页自取)
学完后整体感觉不错,收获还挺多的。