golang slice 创建

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

slice 的创建有两种方法

test := []int{2,3}

或者是使用make,而且通常我们使用 make创建的情况比较多

例如:

test := make([]int, 5, 5)                      // 创建一个类型为 int,长度为 5,容量为 5 的切片

fmt.Println(len(test), cap(test))          //  5 5

test1 := make([]int, 3)                        //如果不指定容量,默认容量等于初始时的长度

fmt.Println(len(test1),cap(test1))        // 3 3

slice 的长度和容量可以自己是可以动态改变的, slice 其实是数组的某一部分

test := make([]int,0)                              // 创建一个长度为0,容量为0 的数组

fmt.Println(len(test),cap(test))               // 0 0

test = append(test, 1)

fmt.Println(len(test),cap(test))              // 1 1

test = append(test, 1)

fmt.Println(len(test),cap(test))              // 2 2

test = append(test, 1)

fmt.Println(len(test),cap(test))              // 3 4

当数组的容量不够时,会重新申请一个两倍于当前长度的 slice,所以在使用过程中,尤其是频繁去往一个 slice 中 append 数据,需要尽可能给一个相对准确的容量, 减少分配过程的损耗。


相关链接:

切片的复制与追加


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:beiciye

查看原文:golang slice 创建

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

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