【go语言入门笔记】6、切片

切片一般用于快速地操作一块数据集合(数据集合包括数组)。
切片(slice)是对数组一个连续片段的引用,所以切片是一个引用类型。
如果将数据集合比作蛋糕的话,切片就是你要的“那一块”。
切的过程包含从哪里开始(这个就是切片的地址)及切多大(这个就是切片的大小)。
容量可以理解为装切片的那个盘子的大小

声明切片类型:var 切片名[]数据类型
var a []string              //声明一个字符串切片
var b = []int{}             //声明一个整型切片

1、从数组(或切片)生成新的切片

切片默认指向一段连续内存区域,可以是数组,也可以是切片本身。
从连续内存区域生成切片是常见的操作,格式如下:

 slice[开始位置:结束位置]
  • slice表示目标切片对象。
  • 开始位置对应目标切片对象的索引。
  • 结束位置对应目标切片的结束索引。
1.1从数组生成新的切片
从数组生成切片,代码如下:
package main
import "fmt"
func main() {
	var aa = [6]int{1, 2, 3, 4, 5, 6}
	bb := aa[0:4] //切片,从数组aa[0]-aa[3]
	fmt.Println(bb)
}

此时打印:
【go语言入门笔记】6、切片_第1张图片

1.2 切片缺省参数规则
如果缺省第一个参数,则默认从开头位置开始

【go语言入门笔记】6、切片_第2张图片

如果缺省第二个参数,则默认从第一个参数位置开始,一直到最后

【go语言入门笔记】6、切片_第3张图片

如果两个参数都缺省,等于与目标数据集合等效

【go语言入门笔记】6、切片_第4张图片

如果两个参数都为0,等于清空切片

例如:切片[0:0]

1.3 从切片生成新的切片
与数组生成基本一样

【go语言入门笔记】6、切片_第5张图片

2、使用make函数构造切片

如果需要动态地创建一个切片,可以使用make()内建函数,格式如下:

make([]T,size,cap)
  • T:数据类型
  • size:切片大小(元素个数)
  • cap:预分配元素数量,提前分配空间,不影响size
    例如:
    【go语言入门笔记】6、切片_第6张图片
    aa和bb均是预分配2个元素的切片,只是aa的内部存储空间已经分配了10个,但实际使用了2个元素。

3、使用append为切片添加元素

【go语言入门笔记】6、切片_第7张图片

4、为切片删除元素

Go 语言并没有对删除切片元素提供专用的语法或者接口,需要使用切片本身的特性来删除元素。

代码如下:

package main

import (
	"fmt"
)

func main() {
	aa := []string{"a", "b", "c", "d", "e", "f"}
	index := 3              //要删除元素的位置,我们要删除d
	fmt.Println(aa[:index]) //表达式,要删除元素之前的所有元素
	fmt.Println(aa[index+1:])//表达式,要删除元素之后的所有元素
	aa = append(aa[:index], aa[index+1:]...)//用append函数拼接前后,完成删除
	fmt.Println(aa)
}

输出如下:
【go语言入门笔记】6、切片_第8张图片

你可能感兴趣的:(go笔记,大数据,开发语言,golang)