Golang数组和切片的区别

栏目: Go · 发布时间: 7年前

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数组和切片的区别》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法引论

算法引论

[美]乌迪·曼博(Udi Manber) / 黄林鹏、谢瑾奎、陆首博、等 / 电子工业出版社 / 2010-1 / 36.00元

本书是国际算法大师乌迪·曼博(Udi Manber)博士撰写的一本享有盛誉的著作。全书共分12章:第1章到第4章为介绍性内容,涉及数学归纳法、算法分析、数据结构等内容;第5章提出了与归纳证明进行类比的算法设计思想;第6章到第9章分别给出了4个领域的算法,如序列和集合的算法、图算法、几何算法、代数和数值算法;第10章涉及归约,也是第11章的序幕,而后者涉及NP完全问题;第12章则介绍了并行算法;最后......一起来看看 《算法引论》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码