Golang数组和切片的区别

笑吧小鸟 · · 529 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

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数组和切片的区别

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

529 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传