searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Go容器编程-切片原理

2023-06-28 07:28:49
3
0

       数组与切片:

       在Go语言中,数组更多是“退居幕后”,承担的是底层存储空间的角色;而切片则走向“前台”为底层的存储(数组)打开了一个访问的“窗口”。

       因此,我们可以称切片是数组的“描述符”。切片之所以能在函数参数传递时避免较大性能损耗,是因为它是“描述符”的特性,切片这个描述符是固定大小的,无论底层的数组元素类型有多大,切片打开的窗口有多长。

       通过上述语句创建的切片,编译器会自动为切片建立一个底层数组,如果没有在make中指定cap参数,那么cap=len,即编译器建立的数组长度为len。

       可以通过语法[low: high]创建对己存在数组进行操作的切片,这被称为数组的切片化(slicing):

             u := [10]byte{11, 12, 13, 14, 15, 16, 17, 18, 19, 20}

             s:= u[3:7]

       还可以基于已有切片创建新的切片,这被称为切片的reslicing。

0条评论
作者已关闭评论
f****n
4文章数
0粉丝数
f****n
4 文章 | 0 粉丝
f****n
4文章数
0粉丝数
f****n
4 文章 | 0 粉丝
原创

Go容器编程-切片原理

2023-06-28 07:28:49
3
0

       数组与切片:

       在Go语言中,数组更多是“退居幕后”,承担的是底层存储空间的角色;而切片则走向“前台”为底层的存储(数组)打开了一个访问的“窗口”。

       因此,我们可以称切片是数组的“描述符”。切片之所以能在函数参数传递时避免较大性能损耗,是因为它是“描述符”的特性,切片这个描述符是固定大小的,无论底层的数组元素类型有多大,切片打开的窗口有多长。

       通过上述语句创建的切片,编译器会自动为切片建立一个底层数组,如果没有在make中指定cap参数,那么cap=len,即编译器建立的数组长度为len。

       可以通过语法[low: high]创建对己存在数组进行操作的切片,这被称为数组的切片化(slicing):

             u := [10]byte{11, 12, 13, 14, 15, 16, 17, 18, 19, 20}

             s:= u[3:7]

       还可以基于已有切片创建新的切片,这被称为切片的reslicing。

文章来自个人专栏
Go语言
4 文章 | 1 订阅
0条评论
作者已关闭评论
作者已关闭评论
0
0