Golang数据类型(数组)

数组重要概念

数组(Array)是一种非常常见的数据类型,几乎所有的计算机编程语言中都会用到它

在Go语言中,数组有如下的特点:

  • 数组里的元素必须全部为同一类型,要嘛全部是字符串,要嘛全部是整数,要嘛全部是byte等等,这点和可以包罗万象,任何数据类型都能混杂在一起作为元素放入的Python中的列表是有本质区别的。
  • 声明数组时,必须指定其长度或者大小(英文叫做length或者size),所谓长度就是该数组能包含的元素的最大个数
  • 数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。因为数组的长度是固定的,所以在Go语言中很少直接使用数组。

声明数组

给该数组里的每个元素赋值(索引值的最小有效值和其他大多数语言一样是 0,不是1)
// [3] 里的3 表示该数组的元素个数及容量
var arr [3]int
arr[0] = 1
arr[1] = 2
arr[2] = 3
声明并直接初始化数组

 

// 第一种方法
var arr [3]int = [3]int{1,2,3}// 第二种方法
arr := [3]int{1,2,3}

如果你不确定数组里具体有多少个元素时,可以使用[…]替代具体的长度(比如[1], [2], [3]等等),Go的编译器会自动帮你算出该数组的长度。举例如下:

array2 := [...]int{5, 6, 7}
fmt.Println("数组array2的长度:", len(array2))

再看一个例子:

func main() {var array1 = [5]int{0, 1, 2, 3, 4}array2 := [...]int{5, 6, 7}var array3 [10]intfmt.Println("数组array1的长度:", len(array1))fmt.Println("数组array2的长度:", len(array2))fmt.Println("数组array3的长度:", len(array3))
}

输出:

这里我们分别用标准格式(隐式声明)简短格式以及标准格式(显示声明)创建了三个整数数组变量array1,array2和array3。

针对数组array1我们通过[5]手动指明了它的长度(注意:这里array1里的元素个数刚好为0,1,2,3,4总共5个整数,和array1的长度匹配,其实这里我们不用一定要在数组里放满5个元素不可,只要元素个数不超过我们定义的长度就可以,因为数组的长度(或大小)指的是该数组能容纳的最大元素个数,并不是当前数组里有多少个元素。)

而针对array2,我们使用[…]让Go帮我们自动计算出了该数组的长度,结果为3。

最后我们用显示声明但是不赋值的方式声明了变量array3,该数组的长度为我们手动指定的10,而该数组里的元素则为10个整数0,也就是在声明变量但是不赋值的情况下,Go自动为我们给整数数据类型分配的零值。

数组一旦被创建过后,其长度就再也不能被更改(不管是改大还是改小),举例如下:

func main() {var array1 = [5]int{0, 1, 2, 3, 4}array2 := [...]int{5, 6, 7}var array3 [10]intfmt.Println("数组array1的长度:", len(array1))fmt.Println("数组array2的长度:", len(array2))fmt.Println("数组array3的长度:", len(array3))array2 = [4]int{5, 6, 7}
}

输出:

如果将数组作为参数传入一个函数,Go会为该数组创建一个副本,实际传入函数中的是数组的副本而不是源本,因此在函数下面对该数组进行的任何操作都会在函数返回后丢失。

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

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

相关文章

【Java学习笔记】 74 - 本章作业

1.验证电子邮件格式是否合法 规定电子邮件规则为 1.只能有一个 2. 前面是用户名,可以是a-z A-Z 0-9 _ - 字符 3. 后面是域名,并且域名只能是英文字母,比如sohu.com或者tsinghua.org.cn 4.写出对应的正则表达式,验证输入的字符串是否为满…

【刷题笔记】两数之和II_二分法||二分查找||边界||符合思维方式

两数之和II_二分法||二分查找 1 题目描述 https://leetcode.cn/problems/two-sum-ii-input-array-is-sorted/ 给你一个下标从 1 开始的整数数组 numbers ,该数组已按 非递减顺序排列 ,请你从数组中找出满足相加之和等于目标数 target 的两个数。如果设…

【软件测试】银行核心业务系统性能测试总结,一篇通透...

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 下面讨论的是字符…

zblog免费插件应用中心-zblog最全插件功能

随着网络时代的不断发展,博客已经成为人们分享知识、表达观点的重要平台之一。在众多博客系统中,Zblog因其简洁、高效的特点备受欢迎。然而如何让博客更具吸引力、提高曝光度,成为许多博主关注的问题。在这个问题面前,Zblog插件应…

代码随想录第十六天(一刷C语言)|找树左下角的值路径总和从中序与后序遍历序列构造二叉树

创作目的:为了方便自己后续复习重点,以及养成写博客的习惯。 一、找树左下角的值 思路:采用递归 ledcode题目:https://leetcode.cn/problems/find-bottom-left-tree-value/description/ AC代码: /*** Definition f…

Attention机制(笔记)

参考:2.3.2注意力机制-part1_哔哩哔哩_bilibili 什么是attention? 答:注意力放在事物最有辨识度的部分 attention计算机制: 为什么用这个公式可以得到attention? 补充说明(chatGPT给出的解释)&…

音频修复和增强软件iZotope RX 10 mac特点介绍

iZotope RX 10 mac是一款音频修复和增强软件,主要特点包括: 声音修复:iZotope RX 10可以去除不良噪音、杂音、吱吱声等,使音频变得更加清晰干净。 音频增强:iZotope RX 10支持对音频进行音量调节、均衡器、压缩器、限…

深入解析进程

在现代计算机系统中,进程是一个核心概念,它代表了程序的执行实例。通过并发执行多个进程,计算机能够提高效率和资源利用率。 1. 进程的概念 进程是指在计算机系统中正在执行的程序的实例。每个进程都有自己的地址空间、寄存器集合、堆栈和文…

XC1136 功率传输(PD) Sink控制器IC PD诱骗器芯片 输出可调 可支持多个

XC1136是一款功率传输(PD) Sink控制器IC。XC1136可以从符合Type-CPD协议的电源中请求最大或指定电压。输入电压范围:3V~28V支持USBType-C规范版本1.3支持USB PD2.0和PD3.0通讯协议,最多支持七个电源对象 该XC1136内置拉低电阻CC1和CC2引脚。当XC1136连接到T…

什么牌子的台灯对孩子的眼睛好?安利五款适合孩子备考的护眼台灯

近年来,青少年的近视问题越来越严重,近视率持续升高,不少上小学一年级就已经戴上了厚厚的近视眼镜。导致这种现象发生的原因有两个,一个是孩子长时间使用电子产品导致。还有就是现在孩子的学习任务,不仅远比80、90后上…

python -- python安装

1、python的诞生和发展: python语言是一种解释型、面向对象型、动态数据类型的高级程序设计语言。 2、python的安装: 1、安装解析器: 在安装的过程中需要注意的是: 在安装pycharm的时候也是同样的道理,需要指定安装…

MySQL进阶知识:锁

目录 前言 全局锁 表级锁 表锁 元数据锁(MDL) 意向锁 行级锁 行锁 行锁演示 间隙锁/临界锁 演示 前言 MySQL中的锁,按照锁的粒度分,分为以下三类 全局锁:锁定数据库中的所有表。表级锁:每次操…