切片基本介绍和入门 | 学习笔记

简介: 简介:快速学习切片基本介绍和入门

开发者学堂课程【Go 语言核心编程 - 基础语法、数组、切片、Map :切片基本介绍和入门】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9634


切片基本介绍和入门

 

内容介绍:

一、需要切片的原因

二、切片的基本介绍

三、切片的基本使用


一、需要切片的原因

需求:需要一个数组用于保存学生成绩,但是学生的个数是不确定的,应该如何解决?(如果用数组,而数组的大小事固定的对于变化不一的情况不适用)

解决方案:使用切片(可以简单的理解成动态的数组;我们需要保存一组不确定的数据时就可以使用切片)

 

二、切片的基本介绍

1、切片的英文是 slice

2、切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。

3、切片的使用和数组类似,遍历切片、访间切片的元素和求切片长度 len(slice)都一样。(切片和数组基本相似,不完全一样;但在遍历切片,访问切片的元素和求切片的长度是一样的)

4、切片的长度是可以变化的,因此切片是一个可以动态变化数组。(这是跟数组的一个较大的区别,数组的长度不可变,如果数组元素过多他便越界,但切片会随着数据的增加而动态增长;切片不完全是一个数组)

5、切片定义的基本语法:

var 变量名[]类型  (在切片名中放的类型,中括号不需要填长度,中括号就表示一个切片)

比如: var a []int  (表示 a 是一个切片的名称,这个切片可以放随机个 int 类型)

 

三、切片的基本使用

1. 在 chapter07里新建一个文件夹名为 slicedemo01,再在此文件下新建一个文件名为 main.go

1代码

package main

import (

"fmt"

func main(){   //演示切片的基本使用

var intArr [5]int = [...]int[1,22,33,66,99)  

//定义一个int数组,大小为5,初始化它为int{1,22,33,66,99};一共五个元素

slice := intArr[1:3]   //声明/定义一个切片

//1. slice 就是切片名

//2. intArr[1:3]表示slice引用到intArr这个数组

//3.引用 intArr 数组的起始下标为1,最后的下标为3(但是不包含3);下标为1的元素是22,下标为3的元素是66,不包含下标为3就是取元素22和33

slice := intArr[1:3]

fmt.Print1n("intArr=", intArr)  

fmt.Println("slice的元素是=", slice)  //22,33

fmt.Println( "slice的元素个数=", len(slice)) // 2

fmt.Println("slice 的容量=",cap(slice))  //切片的容量是可以动态变化,也就是当切片容量不够时它便会自动增长;一般来讲cap是长度的两倍,因为它的容量会预先增加,等空间不够再增加空间,效率会更高

}

2打开浏览器搜索“go语言标准库文档中文版“找到 bliutin,然后找到 cap 函数,出现以下内容:

内建函数 cap 返回 v 的容量,这取决于具体类型﹔

切片:切片的容里〈底层数组的长度〉;若 v 为 nil.cap(v)即为零

(切片的容量可以用 cap 来进行计算)

3运行以上代码,查看 slice 的元素、个数和容量

运行结果如下:

image.png

一般容量是个数的两倍;数组没有容量的概念。

相关文章
|
5月前
|
安全 Go
这一次,带你深入浅出Go语言切片和数组
这一次,带你深入浅出Go语言切片和数组
52 0
|
3月前
|
存储 Java 索引
Java数组操作:基础与进阶指南
Java数组操作:基础与进阶指南
|
5月前
|
存储 编译器 Serverless
go语言第四章(数组和切片)
go语言第四章(数组和切片)
52 0
|
缓存 Java Go
Go语言切片内存优化技巧和实战案例
Go语言切片内存优化技巧和实战案例
119 0
|
Go 索引
GO语言基础教程8——切片
切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容
|
存储 网络协议 测试技术
文件的基本介绍 | 学习笔记
快速学习文件的基本介绍
文件的基本介绍 | 学习笔记
|
数据处理 索引 Python
Python进阶:全面解读高级特性之切片!
切片(slice)就是一种截取索引片段的技术,借助切片技术,我们可以十分灵活地处理序列类型的对象。通常来说,切片的作用就是截取序列对象,然而,对于非序列对象,我们是否有办法做到切片操作呢?在使用切片的过程中,有什么要点值得重视,又有什么底层原理值得关注呢?
215 0
Python进阶:全面解读高级特性之切片!
|
Java Scala 开发者
函数基本介绍和快速入门|学习笔记
快速学习函数基本介绍和快速入门。
104 0
|
编译器 Scala 开发者
元组的基本介绍和创建 | 学习笔记
快速学习元组的基本介绍和创建
|
Scala 开发者
对象匹配基本介绍和快速入门 | 学习笔记
快速学习对象匹配基本介绍和快速入门