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

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

开发者学堂课程【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

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

相关文章
|
10月前
|
机器学习/深度学习 数据采集 存储
通义千问 Qwen 在智能文本分析中的应用实践
本文探讨了通义千问Qwen在智能文本分析的应用,涵盖文本分类、情感分析及关键信息提取,通过具体案例和代码实现,展示了Qwen的强大语言理解能力,为开发者和研究人员提供了实用参考。
|
6月前
|
存储 人工智能 弹性计算
阿里云服务器五代至八代实例对比:性能对比与精准选型指南参考
目前,阿里云服务器最新的实例规格已经升级到第九代,不过主售的云服务器实例规格还是以七代和八代云服务器为主。对于初次接触阿里云服务器实例规格的用户来说,可能并不清楚阿里云服务器五代、六代、七代、八代实例有哪些,以及它们之间有何区别。本文将详细介绍阿里云五代、六代、七代、八代云服务器实例规格,并对比它们在性能方面的提升,以供参考和选择。
|
11月前
|
关系型数据库 MySQL Java
【Docker最新版教程】一文带你快速入门Docker常见用法,实现容器编排和自动化部署上线项目
Docker快速入门到项目部署,MySQL部署+Nginx部署+docker自定义镜像+docker网络+DockerCompose项目实战一文搞定!
1814 11
|
12月前
|
存储 消息中间件 分布式计算
大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
大数据-137 - ClickHouse 集群 表引擎详解2 - MergeTree 存储结构 一级索引 跳数索引
161 0
|
12月前
|
数据采集 存储 人工智能
cdga|数据治理:应对核心业务数据质量参差不齐的挑战与策略
数据治理是指通过制定并实施一系列政策、流程和技术手段,确保数据的可用性、完整性、准确性和安全性,以支持企业的决策和业务运营。对于核心业务数据质量参差不齐的问题,数据治理的重要性不言而喻
|
机器学习/深度学习 算法 开发工具
通义千问2(Qwen2)大语言模型在PAI-QuickStart的微调、评测与部署实践
阿里云的人工智能平台PAI,作为一站式的机器学习和深度学习平台,对Qwen2模型系列提供了全面的技术支持。无论是开发者还是企业客户,都可以通过PAI-QuickStart轻松实现Qwen2系列模型的微调、评测和快速部署。
|
编解码 监控 Android开发
视频码率、分辨率、帧率的关系
视频码率、分辨率、帧率的关系
3006 0
|
Java 开发工具
IDEA中配置阅读并编辑jdk8源码的环境
IDEA中配置阅读并编辑jdk8源码的环境前言
IDEA中配置阅读并编辑jdk8源码的环境
|
算法 Java UED
【JVM】分代收集算法:提升Java垃圾回收效率
【JVM】分代收集算法:提升Java垃圾回收效率
224 0