Golang 开发实战day03 - Arrays Slices

Golang 教程03 - Arrays,Slices

Go语言中的数组和切片都是用于存储数据的类型,但它们之间存在一些重要的区别。了解这些区别对于有效地使用它们至关重要。

1. Arrays 数组

1.1 定义

数组是一种固定大小的数据结构,用于存储相同类型的值。

1.2 语法

Go
// 声明一个长度为 n 的数组,元素类型为 type
var array [n]type// 初始化数组
array := [n]type{value1, value2, ..., valueN}// 访问数组元素
array[i] // 访问第 i 个元素

1.3 示例

// 声明一个长度为 3 的 int 型数组并且初始化数组
var ages [3]int = [3]int{20, 25, 30}// 声名一个长度为4的string型数组并初始化
names := [4]string{"小叮当", "大雄", "静香", "小夫"}// 将“大雄”替换成“胖虎”
names[1] = "胖虎"fmt.Println(ages, len(ages))
fmt.Println(names, len(names))

Output:

在这里插入图片描述

1.4 特点

  • 数组的大小是固定的,在声明时必须指定。
  • 数组元素是连续存储在内存中的。
  • 数组可以直接赋值给另一个数组,但前提是两个数组的长度和元素类型相同。

2. Slices 切片

2.1 定义

切片是一种引用类型,它表示一段连续的数组元素。

2.2 语法

Go
// 声明一个切片,元素类型为 type
var slice []type// 初始化切片
slice := make([]type, len, cap) // 创建一个长度为 len、容量为 cap 的切片
slice := array[start:end] // 从数组 array 中截取一段切片,从 start 开始,到 end 结束 (不包括 end)// 访问切片元素
slice[i] // 访问第 i 个元素

2.3 示例

// 创建一个scores的分数数组
var scores = []int{100, 25, 90, 88}// 获取1号位置元素
scores[1] = 15// 增加数组元素
scores = append(scores, 85)rangeOne := names[1:3]
rangeTwo := names[2:]
rangeThree := names[:3]// 打印切片元素
fmt.Println(scores, len(scores))
fmt.Println(scores, len(scores))
fmt.Println(rangeOne, rangeTwo, rangeThree)

Output:

在这里插入图片描述

2.4 特点

  • 切片的长度是可变的,可以使用 len() 函数获取。
  • 切片的容量是指切片底层数组的容量,可以使用 cap() 函数获取。
  • 切片可以通过 append() 函数追加元素,也可以通过 copy() 函数复制切片。

3. 对比

特性数组切片
大小固定可变
容量固定可变
存储连续存储引用类型
初始化使用 []type{value1, value2, …, valueN}使用 make([]type, len, cap) 或 array[start:end]
赋值直接赋值需使用 copy() 函数
访问元素使用 array[i]使用 slice[i]

4. 总结

数组和切片都是 Go 语言中重要的数据结构。数组是一种固定大小的数据结构,用于存储相同类型的值。切片是一种引用类型,它表示一段连续的数组元素。了解数组和切片的区别,可以有效地使用它们来存储和处理数据。

在这里插入图片描述

感谢观看,下一期内容标准library

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/738192.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

广西省行政村边界shp数据/广西省乡镇边界/广西省土地利用分类数据/径流分布

广西壮族自治区,地处中国南部,北回归线横贯中部。南北以贺州——东兰一线为界,此界以北属中亚热带季风,以南属南亚热带季风。 数据范围:全国行政区划-行政村界 数据类型:面状数据,全国各省市县…

1月笔记本电脑行业分析:多品牌下滑但ThinkPad逆势增长!

2024年1月,笔记本行业市场格局出现较大的变化。长期在京东平台保持头部联想和惠普,被ThinkPad挤下(虽然是联想旗下品牌),排名掉至第二和第三。ThinkPad以超2.7亿的月销售额成绩拿下第一,市占比16%。 与去年…

java SSM农产品订购网站系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM农产品订购网站系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采…

算法-贪心-112. 雷达设备

题目 假设海岸是一条无限长的直线,陆地位于海岸的一侧,海洋位于另外一侧。 每个小岛都位于海洋一侧的某个点上。 雷达装置均位于海岸线上,且雷达的监测范围为 d,当小岛与某雷达的距离不超过 d 时,该小岛可以被雷达覆…

大语言模型:Large Language Models Are Human-Level Prompt Engineers概述

研究内容 如何通过prompt,在不进行微调大语言模型的前提下,增加大语言模型的表现 研究动机 prompt非常有用,但是人工设置的非常不自然;因此提出了要自动使用大语言模型自己选择prompt;取得了很好的效果。 作者主要…

python实现生成树

生成树 生成树(Spanning Tree)是一个连通图的生成树是图的极小连通子图,它包含图中的所有顶点,并且只含尽可能少的边。这意味着对于生成树来说,若砍去它的一条边,则会使生成树变成非连通图;若给…

Git LFS【部署 01】Linux环境安装git-lfs及测试

Linux系统安装git-lfs及测试 1.下载2.安装3.测试4.总结 Git LFS(Large File Storage)是一个用于Git版本控制系统的扩展,它专门用来管理大型文件,如图像、音频和视频文件。 1.下载 安装包下载页面:https://github.com/…

web3D三维引擎(Direct3D、OpenGL、UE、U3D、threejs)基础扫盲

Hi,我是贝格前端工场的老司机,本文介绍文web3D的几个引擎,做个基础扫盲,如果还不能解决问题,可以私信我,搞私人订制呦。 三维引擎是指用于创建和渲染三维图形的软件框架。它们通常提供了图形处理、物理模拟…

AIGC: 2 语音转换新纪元-Whisper技术在全球客服领域的创新运用

背景 现实世界,人跟人的沟通相当一部分是语音沟通,比如打电话,聊天中发送语音消息。 而在程序的世界,大部分以处理字符串为主。 所以,把语音转换成文字就成为了编程世界非常普遍的需求。 Whisper 是由 OpenAI 开发…

PostgreSQL索引篇 | GIN索引 (倒排索引)

GIN索引 倒排索引 PostgreSQL版本为8.4.1 (本文为《PostgreSQL数据库内核分析》一书的总结笔记,需要电子版的可私信我) 索引篇: PostgreSQL索引篇 | BTreePostgreSQL索引篇 | GiST索引PostgreSQL索引篇 | Hash索引PostgreSQL索引…

汽车软件市场迅猛扩张,Perforce Helix Core与Helix IPLM助力汽车软件开发的版本控制及IP生命周期管理

汽车软件世界正处于持续变革和转型之中。从自动驾驶汽车到电动汽车和先进的驾驶辅助系统,汽车软件的集成度和复杂性不断提升。 据美国电气与电子工程师协会的研究,如今大多数汽车都集成了超过1亿行代码,而仅仅十年前,这种水平的汽…

软件杯 垃圾邮件(短信)分类算法实现 机器学习 深度学习

文章目录 0 前言2 垃圾短信/邮件 分类算法 原理2.1 常用的分类器 - 贝叶斯分类器 3 数据集介绍4 数据预处理5 特征提取6 训练分类器7 综合测试结果8 其他模型方法9 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 垃圾邮件(短信)分类算…

ubuntu 18.04安装教程(详细有效)

文章目录 一、下载ubuntu 18.04镜像二、安装ubuntu1. 点击下载好的Vmware Workstation,点击新建虚拟机,选择 “自定义(高级)”,之后下一步。2. 默认配置,不需要更改,点击下一步。3. 选择 “安装程序光盘映像文件(iso)(…

Windows环境部署Hadoop-3.3.2和Spark3.3.2

目录 一、Windows环境部署Hadoop-3.3.2 1.CMD管理员解压Hadoop压缩包 2.配置系统环境变量 3.下载hadoop winutils文件 4.修改D:\server\hadoop-3.3.2\etc\hadoop目录下的配置文件 (1)core-site.xml (2)hdfs-site.xml (3)mapred-site.xml (4)yarn-site.xml (5)workers…

Oracle 层级查询(Hierarchical Queries)

如果一张表中的数据存在分级(即数据间存在父子关系),利用普通SQL语句显示数据间的层级关系非常复杂,可能需要多次连接才能完整的展示出完成的层级关系,更困难的是你可能不知道数据到底有多少层。而利用Oracle的层级查询…

VSCode单机活动栏图标无法收起

如果活动栏为展开状态,单击活动栏图标可以正常收起,但无法通过再次单击打开,解决方案如下: 设置->工作台->外观: Activity Bar:Icon Click Behavior: 切换为默认的toggle

案例分析篇03:一篇文章搞定软考设计模式考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章推荐: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12601310.html 【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例分析篇-…

垃圾收集器

垃圾收集器 文章目录 垃圾收集器垃圾收集算法分代收集理论标记复制算法(eden区域算法)标记清除算法(老年代算法)标记整理算法垃圾收集器种类垃圾收集器之Serial(-XX:useSerialGC -XX: useSerialOldGC)垃圾收集器之Parallel Scavenge(-XX:useParallelGC -…

51单片机基础篇系列-点亮一个LED发光管基础知识搭建

🌈个人主页: 会编辑的果子君 💫个人格言:“成为自己未来的主人~” LED发光二极管 它是半导体二极管的一种,可以把电能转化成光能,常简写为LED,发光二极管与普通二极管一样是由一个PN结组成,也具有单向…

Android中单例模式正确实现方式

1. 饿汉模式 -线程安全 在类加载时进行实例化, 线程安全,但会导致类加载时间变长。饿汉模式如果使用过多,可能会对App启动耗时带来不利影响。 2. 懒汉模式 -线程不安全 没有加锁, 因此线程不安全。 3. 两次判空 加同步锁 -线程不…