当前位置:   article > 正文

【go语言入门笔记】6、切片_go [:0]

go [:0]

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

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

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

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

 slice[开始位置:结束位置]
  • 1
  • 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)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

此时打印:
在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

在这里插入图片描述

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

例如:切片[0:0]

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

在这里插入图片描述

2、使用make函数构造切片

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

make([]T,size,cap)
  • 1
  • T:数据类型
  • size:切片大小(元素个数)
  • cap:预分配元素数量,提前分配空间,不影响size
    例如:
    在这里插入图片描述
    aa和bb均是预分配2个元素的切片,只是aa的内部存储空间已经分配了10个,但实际使用了2个元素。

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

在这里插入图片描述

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)
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

输出如下:
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/206416
推荐阅读
相关标签
  

闽ICP备14008679号