go语言数组与切片

1.数组

        数组 类型名是[n]elemetType,其中n是数组长度,elementType是数组元素类型。比如一个包 含2个int类型元素的数组类型可表示为[2]int。 数组一般在创建时通过字面量初始化,单独声明一个数组类型变量而不进行初始化是没有意义的。

package mainimport ("fmt"
)func main() {a := [3]int{1, 2, 3}   \\指定长度和初始化字面量b := [...]int{1, 2, 3}  \\不指定长度,但是由后面的初始化列表来确定其长度c := [3]int{1: 1, 2: 3}  \\指定总长度,并通过索引值进行初始化,没有初始化的元素使用类型默认值0 d := [...]int{1: 1, 2: 3} \\不指定总长度,并通过索引值进行初始化,数组长度由最后一个索引值确定,没有初始化的元素使用类型默认值0for i := 0; i < 3; i++ {f := a[i]g := b[i]h := c[i]j := d[i]fmt.Printf("\r")fmt.Println(f, g, h, j)//	fmt.Printf("\r")}
}1 1 0 0
2 2 1 1
3 3 3 3

数组的特点:

        数组创建后长度就固定了,不可以在追加元素

        数组是值类型,数组赋值或作为函数参数都是值拷贝

        数组长度是数组类型的组成部分,[10]int和[20]int表示不同的类型

        可以根据数组创建切片

2.切片

        Go语言的数组的定长性和值拷贝限制了其使用场景,Go提供了另一种数据类型slice(切片),这是一种变长数组,其数据结构中有指向数组的指针,所以是一种引用类型。

        Go为切片维护三个元素:指向底层数组的指针、切片的元素数量和底层数组的容量。

        我们通过数组创建切片:

package mainimport ("fmt"
)func main() {var array = [...]int{0, 1, 2, 3, 4, 5, 6}s1 := array[0:4]s2 := array[:4]s3 := array[2:]fmt.Printf("%v\n", s1)fmt.Printf("%v\n", s2)fmt.Printf("%v\n", s3)
}[0 1 2 3]
[0 1 2 3]  
[2 3 4 5 6]

        通过内置函数make创建切片,注意由make 创建的切片各元素被默认初始化为切片元素类型的零值:

package mainimport ("fmt"
)func main() {a := make([]int, 10)fmt.Printf("%v\n", a)
}[0 0 0 0 0 0 0 0 0 0]

        注意:直接声明切片类型变量是没有意义的

package mainimport ("fmt"
)func main() {var a []intfmt.Printf("%v\n", a)
}[]

        此时a的数据结构为:

        切片支持的操作:

        1.内置函数len()返回切片长度

        2.内置函数cap()返回切片底层数组容量

        3.内置函数append()对切片进行追加

        4.内置函数copy()用于复制一个切片

package mainimport ("fmt"
)func main() {a := [...]int{0, 1, 2, 3, 4, 5, 6}b := make([]int, 2, 4)c := a[0:3]fmt.Println(len(b))fmt.Println(cap(b))b = append(b, 1)fmt.Println(b)fmt.Println(len(b))fmt.Println(cap(b))b = append(b, c...)fmt.Println(b)fmt.Println(len(b))fmt.Println(cap(b))d := make([]int, 2, 2)copy(d, c)fmt.Println(d)fmt.Println(len(d))fmt.Println(cap(d))
}2
4            
[0 0 1]      
3            
4            
[0 0 1 0 1 2]
6            
8            
[0 1]        
2            
2           

字符串和切片的相互转换:

package mainfunc main() {str := "hello,world"a := []byte(str)b := []rune(str)
}

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

全国老年大学或将进入“5G智慧校园“时代

近日&#xff0c;我国晚年大学协会在北京举行官网改版上线典礼&#xff0c;一起这也标志着我国晚年大学协会及全国晚年大学进入了“5G智慧校园”年代。据了解&#xff0c;5G智慧校园以“云”技能为根底&#xff0c;全面落实数字云、办理云、安全云。 “三朵云”助推5G智慧校园&…

Find My资讯|苹果 iOS 17.5 率先执行跨平台反跟踪器标准

苹果和谷歌公司于 2023 年 5 月宣布推出“检测预期外位置追踪器”&#xff08;Detecting Unwanted Location Trackers&#xff09;行业标准&#xff0c;经过 1 年多的打磨之后&#xff0c;该标准目前已通过 iOS 17.5 部署到 iPhone 上。谷歌也将为运行 Android 6.0 或更高版本的…

web安全学习笔记(16)

记一下第27-28课的内容。Token 验证 URL跳转漏洞的类型与三种跳转形式&#xff1b;URL跳转漏洞修复 短信轰炸漏洞绕过挖掘 一、token有关知识 什么是token&#xff1f;token是用来干嘛的&#xff1f;_token是什么意思-CSDN博客 二、URL跳转漏洞 我们在靶场中&#xff0c;…

Originx的创新解法之:应用程序故障篇

Originx并不期望做一个完整覆盖全栈的监控体系&#xff0c;而是利用北极星指标体系标准化找出故障方向&#xff0c;然后联动各种成熟的监控数据形成证据链条&#xff0c;并将各种数据融合在一个故障报告之中。更多信息请参考 Log | Metrics | Trace的联动方式探讨http://mp.wei…

KING大咖直播 | KES RAC如何成为核心系统首选?

核心系统负载高 停机代价大 KES RAC来了 KingbaseES共享存储集群 不仅满足您对数据库 扩展性与可用性的严苛要求 更能在保障性能的同时 实现低成本、高效益 是企业核心系统的理想选择 5月16日19:30-20:30 锁定金仓数据库视频号 人大金仓高级研发工程师 深度揭秘如何实现 Kingba…

Linux ps命令详细参数

一、简介 在Linux系统中&#xff0c;ps(Process Status的缩写)命令常常用来用来列出系统中当前运行的进程。ps命令列出的是当前那些进程的快照&#xff0c;就是执行ps命令的那个时刻的那些进程&#xff0c;如果想要动态的显示进程信息&#xff0c;就可以使用top命令。要对进程…

失而复得:揭秘删除照片恢复的技巧!

我们的生活与照片紧密相连。每一张照片都承载着一段独特的记忆&#xff0c;记录着我们的喜怒哀乐。然而&#xff0c;有时候我们会因为误操作、存储设备损坏或是文件管理不当而失去这些宝贵的照片。别担心&#xff01;现在&#xff0c;我们将揭示删除照片恢复的神秘面纱&#xf…

ATA-2021B高压放大器在光纤超声传感器中的应用

实验名称&#xff1a;超声传感性能研究 测试目的&#xff1a; 光纤马赫-曾德尔干涉仪是一种灵敏度高、结构灵活的传感结构。当在MZI上施加超声波信号时&#xff0c;会影响所涉及的干涉光之间的光程差&#xff0c;并导致干涉光谱的漂移。由于模式耦合是基于MZI的光纤传感器的关键…

前端学习第一课

AJAX 事先说明&#xff0c;这只是记录&#xff0c;并不是从零到一的教学内容&#xff0c;如果想要学习的话&#xff0c;可以跳过本文章了 ok&#xff0c;转回正题&#xff0c;正如上面所说&#xff0c;这只是记录。其实我是有一定的前端基础的&#xff0c;也做过涉及相关的开发…

centos7.9安装es7.12.0

下载es 国内镜像&#xff1a;https://mirrors.huaweicloud.com/elasticsearch/7.12.0/ 下载并上传内容到/usr/local目录下 解压&#xff1a; tar -zxvf /uar/local/elasticsearch-7.12.0-linux-x86_64.tar.gz安装 es一般不能用root启动&#xff0c;因此需要创建es:es用户和…

又一个行业被Ai背刺了:Comfyui生成你的专属模特!

工作流获取方式放在文末了 Ai技术的进步&#xff0c;带来了许多之前无法实现的新技术和新成品&#xff0c;这也使得曾经需要漫长的时间和复杂的创作过程才能够完成的工作呗Ai技术轻松代替。 于此同时&#xff0c;不同行业也在这个过程中受到了不同程度的冲击。 今天给大家分…

反激式开关电源-8利用AP法进行变压器设计

变压器AP的计算 在变压器设计中&#xff0c;主要有两种方法&#xff0c;一种称为Kc法&#xff0c;这种方法也称为磁芯几何参数法&#xff0c;如果用这个方法来进行设计&#xff0c;那么我们首先要计算出磁芯的几何参数Kc值&#xff0c;在这个参数上留有一定的裕度后选取和Kc值…

在win10折腾Flowise:部署和尝试

Flowise 是一种低代码/无代码拖放工具&#xff0c;旨在让人们轻松可视化和构建 LLM 应用程序。 本地部署 操作系统&#xff1a; win10 由于网络、操作系统等各种未知问题&#xff0c;使用npm install -g flowise的方式&#xff0c;尝试了很多次&#xff0c;都没有部署成功&am…

信息安全相关内容

信息安全 安全防护体系 安全保护等级 安全防护策略 安全技术基础 安全防护体系 安全防护体系有7个等级 安全保护等级 安全保护等级有5个等级,从上到下是越来越安全的用户自主其实就是用户自己本身具有的相应的能力 安全防护策略 安全策略是对抗攻击的主要策略安全日志: …

24长三角B题1-5问完整代码+15页保姆级思路已更新

比赛题目的完整版思路可执行代码数据参考论文都会在第一时间更新上传的&#xff0c;大家可以参考我往期的资料&#xff0c;所有的资料数据以及到最后更新的参考论文都是一次付费后续免费的。注意&#xff1a;&#xff08;建议先下单占坑&#xff0c;因为随着后续我们更新资料数…

单片机烧录程序时“DTR的低电平复位,RTS高电平进入bootloader”有关的串口Modem联络信号

烧录程序时常见DTR和RTS引脚 参考&#xff0c;参考视频 因为常常使用的都是串口下载程序&#xff0c;常用的芯片CH340系列&#xff0c;下图中标红的引脚是MODEM联络信号&#xff0c;其中常见的DTR和RTS就是常见的串口Modem网络输出信号&#xff0c;也就是通过烧录软件控制的接…

一键操作!如何轻松将安卓手机视频传输到电脑

在这篇文章中&#xff0c;我们将探讨如何使用Coolmuster Android Assistant软件&#xff0c;从安卓设备传输视频文件到电脑。Coolmuster Android Assistant是一款强大的管理工具&#xff0c;它能够帮助用户轻松地管理安卓设备上的数据&#xff0c;包括联系人、短信、应用程序、…

吴恩达深度学习笔记:优化算法 (Optimization algorithms)2.8

目录 第二门课: 改善深层神经网络&#xff1a;超参数调试、正 则 化 以 及 优 化 (Improving Deep Neural Networks:Hyperparameter tuning, Regularization and Optimization)第二周&#xff1a;优化算法 (Optimization algorithms)2.8 Adam 优化算法(Adam optimization algor…