GoLong的学习之路(五)语法之数组

书接上回,上回书说到,循环语句,在go中循环语句的少了whlie这个关键词,但是与之for可以改这个改这个特点。并且在终止关键词中,又有标签可以方便,停止。这次说数组

文章目录

  • Array(数组)
    • 数组的初始化
      • 方法一
      • 方法二
      • 方法三
    • 数组遍历
    • 二维数组
      • 二维数组的遍历
    • 数组是值类型

Array(数组)

数组是同一种数据类型元素的集合。

在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。(有点类似与C语言)

var 数组变量名 [元素数量] T

数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。

var a [3]int
var b [4]int
a = b //不可以这样做,因为此时a和b是不同的类型

数组可以通过下标进行访问,下标是从0开始,最后一个元素下标是:len-1,访问越界(下标在合法范围之外),则触发访问越界,会报错。

数组的初始化

方法一

初始化数组时可以使用初始化列表来设置数组元素的值。

func main() {var testArray [3]int                        //数组会初始化为int类型的零值var numArray = [3]int{1, 2}                 //使用指定的初始值完成初始化var cityArray = [3]string{"北京", "上海", "深圳"} //使用指定的初始值完成初始化fmt.Println(testArray)                      //[0 0 0]fmt.Println(numArray)                       //[1 2 0]fmt.Println(cityArray)                      //[北京 上海 深圳]
}

在这里插入图片描述

方法二

按照上面的方法每次都要确保提供的初始值和数组长度一致,一般情况下我们可以让编译器根据初始值的个数自行推断数组的长度。

var testArray [3]intvar numArray = [...]int{1, 2}var cityArray = [...]string{"北京", "上海", "深圳"}fmt.Println(testArray)                          //[0 0 0]fmt.Println(numArray)                           //[1 2]fmt.Printf("type of numArray:%T\n", numArray)   //type of numArray:[2]intfmt.Println(cityArray)                          //[北京 上海 深圳]fmt.Printf("type of cityArray:%T\n", cityArray) //type of cityArray:[3]string
}

在这里插入图片描述

方法三

我们还可以使用指定索引值的方式来初始化数组

a := [...]int{1: 1, 3: 5}fmt.Println(a)                  // [0 1 0 5]fmt.Printf("type of a:%T\n", a) //type of a:[4]int

在这里插入图片描述

数组遍历

func main() {var a = [...]string{"北京", "上海", "深圳"}// 方法1:for循环遍历for i := 0; i < len(a); i++ {fmt.Println(a[i])}// 方法2:for range遍历for index, value := range a {fmt.Println(index, value)}
}

二维数组

二维数组和C语言和java类似。用法和含义都差不多

func main() {a := [3][2]string{{"北京", "上海"},{"广州", "深圳"},{"成都", "重庆"},}fmt.Println(a) //[[北京 上海] [广州 深圳] [成都 重庆]]fmt.Println(a[2][1]) //支持索引取值:重庆
}

二维数组的遍历

import "fmt"func main() {a := [3][2]string{{"北京", "上海"},{"广州", "深圳"},{"成都", "重庆"},}fmt.Println(a)       //[[北京 上海] [广州 深圳] [成都 重庆]]fmt.Println(a[2][1]) //支持索引取值:重庆for _, v1 := range a {for _, v2 := range v1 {fmt.Printf("%s\t", v2)}fmt.Println()}
}

多维数组只有第一层可以使用…来让编译器推导数组长度。

数组是值类型

什么是值类型?其实对比java就可以明白,Java中的数组是引用类型,在方法中传参,对数数组的元素进行修改会数组原有的数据发生改变,但是,Go中不存在这个方式。Go中进行传入的是值类型,诺是函数想对数组元素进行改变,就必须通过指针。此处不说,等待下回分解。

func modifyArray(x [3]int) {x[0] = 100
}func modifyArray2(x [3][2]int) {x[2][0] = 100
}
func main() {a := [3]int{10, 20, 30}modifyArray(a) //在modify中修改的是a的副本xfmt.Println(a) //[10 20 30]b := [3][2]int{{1, 1},{1, 1},{1, 1},}modifyArray2(b) //在modify中修改的是b的副本xfmt.Println(b)  //[[1 1] [1 1] [1 1]]
}

在这里插入图片描述

  1. 数组支持 “==“、”!=” 操作符,因为内存总是被初始化过的。
  2. [n]*T表示指针数组, * [n]T表示数组指针 。

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

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

相关文章

计算机网络_03_tcp/ip四层模型

文章目录 1.为什么会有tcp/ip?2.tcp/ip是什么?3.为什么会有tcp/ip四层模型?4.tcp/ip四层模型介绍 1.为什么会有tcp/ip? 早期的计算机(计算机网络没有出现之前)几乎都是各自为战, 各种操作系统厂家百花齐放, 市面上的大部分计算机使用的都是不同的操作系统, 为每个人提供定…

git简介和指令

git是一个开源的的分布式版本控制系统&#xff0c;用于高效的管理各种大小项目和文件 用途&#xff1a;防止代码丢失&#xff0c;做备份 项目的版本管理和控制&#xff0c;可以通过设置节点进行跳转 建立各自的开发环境分支&#xff0c;互不影响&#xff0c;方便合并 在多终端开…

【Javascrpt】比较,逻辑运算符

目录 比较运算符 逻辑运算符 &&(与&#xff09; ||&#xff08;或&#xff09; 两真&#xff08;||左侧为真&#xff0c;||右侧为真&#xff09; 两假&#xff08;||左侧为假&#xff0c;右侧为假&#xff09; 一真一假&#xff08;||一侧为假&#xff0c;另一侧为…

需要在 MySQL 服务器中监控的重要指标

MySQL是一个开源的关系数据库管理系统&#xff0c;它基于客户端-服务器模型运行&#xff0c;使用SQL作为其通信模式。它具有灵活性和可扩展性、高安全性、易用性以及无缝处理大型数据集的能力&#xff0c;由于其广泛的功能&#xff0c;MySQL 被用作数据库管理系统的一部分。 什…

ubuntu20.04运用startup application开机自启动python程序

运用startup application开机自启动python程序。在终端中输入gnome-session-properties,如果显示没有则先进行安装&#xff0c;sudo apt-get update 和sudo apt install StartupApplications(根据显示提示安装)。在显示程序中搜索startup&#xff0c;打开应用程序。 在程序目录…

【React Router】React Router学习笔记

React Router学习笔记 React Router1.什么是React Router?2.为什么要用React Router?3.基础3.1 路由配置3.2 路由匹配原理3.3 History3.3.1 browerHistory3.3.2 hashHistory3.3.3 createMemoryHistory3.3.4 实现示例 3.4 默认路由(IndexRoute)与IndexLink3.4.1 IndexRoute3.4…

爬虫爬取数据时怎么配置代理IP来精准导航分析大数据?

在这个数字盛宴中&#xff0c;每一刹那都充满了无数的信息流转。就像瀑布中的水滴&#xff0c;每一滴都承载着可能性。爬虫代理IP与穿云API就像是这场盛宴中的精准导航仪&#xff0c;帮助我们捕捉那些最有价值的信息滴点&#xff0c;确保在这个时代的快速迭代中&#xff0c;我们…

【C++项目】高并发内存池第二讲中心缓存CentralCache框架+核心实现

CentralCache 1.框架介绍2.核心功能3.核心函数实现介绍3.1SpanSpanList介绍3.2CentralCache.h3.3CentralCache.cpp3.4TreadCache申请内存函数介绍3.5慢反馈算法 1.框架介绍 回顾一下ThreadCache的设计&#xff1a; 如图所示&#xff0c;ThreadCache设计是一个哈希桶结构&…

软件测开记录(四)

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【剑指Offer】37.序列化二叉树

题目 请实现两个函数&#xff0c;分别用来序列化和反序列化二叉树&#xff0c;不对序列化之后的字符串进行约束&#xff0c;但要求能够根据序列化之后的字符串重新构造出一棵与原二叉树相同的树。 二叉树的序列化(Serialize)是指&#xff1a;把一棵二叉树按照某种遍历方式的结…

v-on 可以监听多个方法吗?

目录 ​编辑 前言&#xff1a;Vue 3 中的 v-on 指令 详解&#xff1a;v-on 指令的基本概念 用法&#xff1a;v-on 指令监听多个方法 解析&#xff1a;v-on 指令的优势和局限性 优势 局限性 **v-on 指令的最佳实践** - **适度监听**&#xff1a; - **方法抽离**&#x…

OpenGL —— 2.9、摄像机之模拟CS鼠标视角转动(附源码,glfw+glad)

源码效果 C源码 纹理图片 需下载stb_image.h这个解码图片的库&#xff0c;该库只有一个头文件。 具体代码&#xff1a; vertexShader.glsl #version 330 corelayout(location 0) in vec3 aPos; layout(location 1) in vec2 aUV;out vec2 outUV;uniform mat4 _modelMatrix; …

Kubernetes技术与架构-Ingress Controller

Ingress Controller控制器是实现Ingress对象的定义的组件&#xff0c;也即网关&#xff0c;负责Kubernetes集群内流量的分发&#xff0c;Kubernetes可以运行多个Ingress Controller控制器实例&#xff0c;不同的Ingress定义可以使用不同的Ingress Controller控制器实现&#xf…

JVM工具使用(jstat + jmap)

命令格式 jstat -gcutil pid interval(ms) 举例&#xff1a; jstat -gcutil 16361 1000 线上服务器的GC情况如下&#xff1a; 参数说明如下&#xff1a; S0: 新生代中Survivor space 0区已使用空间的百分比S1: 新生代中Survivor space 1区已使用空间的百分比E: 新生代已使用空…

查看当前cmake版本支持哪些版本的Visual Studio

不同版本的的cmake对Visual Studio的版本支持不同&#xff0c;以下图示展示了如何查看当前安装的cmake支持哪些版本的Visual Studio。 1.打开cmake-gui 2.查看cmake支持哪些版本的Visual Studio

Unity读取写入Excel

1.在Plugins中放入dll&#xff0c;118开头的dll在Unity安装目录下&#xff08;C:\Program Files\Unity\Editor\Data\Mono\lib\mono\unity&#xff09; 2.写Excel public void WriteExcel(){//文件地址FileInfo newFile new FileInfo(Application.dataPath "/test.xlsx…

无障碍阅读他人开源项目结构:看完本文,你将信心满满

先看看阿里是怎么约定的 我印象中&#xff0c;以前在看《阿里巴巴Java开发手册》时&#xff0c;好像有关于工程结构和应用分层相关的内容&#xff0c;于是我回翻了一下&#xff0c;果然有&#xff1a; 它这里面讲的内容大概就是&#xff1a;关于一个正常的企业项目里一种通用的…

一款功能强大的音乐曲谱软件Guitar Pro 8 .1.1for Mac 中文破解版

Guitar Pro 8 .1.1for Mac 中文破解版是一款功能强大的音乐曲谱软件&#xff0c;非常适合学习如何玩&#xff0c;改进技巧&#xff0c;重现喜爱的歌曲或陪伴自己。可以帮助我们进行吉他的学习、绘谱与创作&#xff0c;它包含了几乎所有的吉他现有指法及音色&#xff0c;在做弹拨…

黄金现货操作与盈亏

现在作黄金现货买卖&#xff0c;投资者已经完全以电子化的方式来进行&#xff0c;国内和香港的投资者&#xff0c;通过香港的正规平台入市&#xff0c;可以获得50倍的资金杠杆&#xff0c;以及全天候交易的机会&#xff0c;只要掌握了一些基本的操作方式&#xff0c;所有投资者…

buuctf[极客大挑战 2019]Havefun 1

网页环境title标题每一帧都不要放过&#xff0c;或许那个不起眼的地方就存在重要信息到这并未发现什么重要信息&#xff0c;F12看看在源代码底部发现PHP代码&#xff1a; <!-- $cat$_GET[cat]; echo $cat; if($catdog){ echo Syc{cat_cat_cat_cat}; } --> PHP代码…