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数组和切片的区别》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UML和模式应用
拉曼 / 李洋、郑䶮 / 机械工业出版社 / 2006-5 / 66.00元
《UML和模式应用(原书第3版)》英文版面世以来,广受业界专家和读者的好评,历经3个版本的锤炼,吸收了大量OOA,D的精华思想和现代实践方法。全书叙述清晰、用词精炼、构思巧妙,将面向对象分析设计的概念、过程、方法、原则和个人的实践建议娓娓道来,以实例为证,将软件的分析和设计的过程叙述得如逻辑推理一般,于细节处见真知。 《UML和模式应用(原书第3版)》是一本经典的面向对象分析设计技术的入门书......一起来看看 《UML和模式应用》 这本书的介绍吧!