Golang数组和切片的区别
大纲
- 数组是固定大小
- 切片不是动态数组,可以扩容
区别
- 定义方式不一样
- 初始化方法不一样
package main import "fmt" func main() { // -------------------- 数组 ----------------- // 指定数组大小 var a1 [5]int // 自动推断数组大小 a2 := [...]int{1, 2, 3} // 打印 fmt.Println(a1, a2) // 按索引赋值 a3 := [...]int{2: 2, 4: 4} fmt.Println(a3) // 按索引赋值 a4 := [5]int{2: 2, 4: 4} fmt.Println(a4) // -------------------- 切片 ----------------- // 定义切片 var b1 []int fmt.Println(b1) // 初始化 b1 = make([]int, 5, 5+3) fmt.Println(b1) fmt.Printf("b1=%v,len=%d,cap=%d\n", b1, len(b1), cap(b1)) // 初始化 b2 := make([]int, 3, 5) fmt.Printf("b2=%v,len=%d,len=%d\n", b2, len(b2), cap(b2)) }
- 执行结果
[Running] go run main.go -------------------- [0 0 0 0 0] [1 2 3] [0 0 2 0 4] [0 0 2 0 4] [] [0 0 0 0 0] b1=[0 0 0 0 0],len=5,cap=8 b2=[0 0 0],len=3,len=5 [Done] exited with code=0 in 0.237678 seconds
定义不一样
- 数组定义
var a1 [3]int var a2 [...]int{1,2,3}
- 切片定义
var b1 []int b2 := make([]int, 3, 5)
初始化不同
- 数组
a1 := [...]int{1,2,3} a2 := [5]int{1,2,3}
- 切片
b1 := make([]int, 3,5)
以上所述就是小编给大家介绍的《Golang数组和切片的区别》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
移动应用的设计与开发
[美] 弗林 (Brian Fling) / 马晶慧 / 电子工业出版社 / 2010-5 / 59.80元
本书全面介绍了如何在移动设备上设计和开发应用程序。书中从介绍移动产业的生态环境和移动媒体开始,阐述产品策划的方法、产品架构、视觉设计和产品类型的选择,并详细描述了产品实现过程中所用到的一些技术、工具和概念,最后还简单介绍了如何获得利润和降低成本,肯定了iPhone在移动设备发展史上起到的巨大推动作用。本书不仅能让读者了解到移动设计和开发的知识,更重要的是,它揭示了移动开发的代价高昂、标准混乱的根本......一起来看看 《移动应用的设计与开发》 这本书的介绍吧!