数组 for-range 遍历|学习笔记

简介: 快速学习数组 for-range 遍历。

开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:数组 for-range 遍历学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9629


数组 for-range 遍历

 

内容介绍:

一、数组的遍历的方式

二、for-range 的基本语法及说明

三、for-range 的遍历案例

四、数组的使用注意事项和细节

 

一、数组的遍历的方式

1.数组的遍历

(1) 方式1-常规遍历:

var score [5]float64

for i = 0; i < len( score);  i++{

fmt.Printf("请输入第%d 个元素的值\n", i+1)

fmt.scanln(&score[i])

}

//变量数组打印

for i := 0; i < len(score); i++{

fmt.Printf("score[%d]=%v\n", i, score[i])

(2) 方式2-for-range 结构遍历

这是 Go 语言一种独有的结构,可以用来遍历访问数组的元素。

 

二、for-range 的基本语法及说明

1.for-range 的基本语法

for index, value := range array01 {  

//:=是一个类型推导符,相当于定义的同时进行赋值。array01就是需要遍历的数组的名称。

}

2.说明

(1) 第一个返回值 index 是数组的下标   //for-range 在遍历数组的时候,会依次遍历,它会先把 array01第一个元素的下标放到 index

(2) 第二个 value 是在该下标位置的值  //index 下标对应的值就是 value

(3) 他们都是仅在 for 循环内部可见的局部变量  //涉及到变量的作用域:如果变量是在 for 循环的语句块中定义的,那它的作用域只能在 for 循环的代码块中,超出代码块就无法使用了。index 和 value只能在{}中使用

(4) 遍历数组元素的时候,如果不想使用下标 index,可以直接把下标 index标为下划线_  //下划线_是占位符和忽略符

(5) index 和 value 的名称不是固定的,即程序员可以自行指定,一般命名为 index 和 value  //index,value 两个变量就是名称,并不是固定的,而是程序员指定的

 

三、for-range的遍历案例

1.案例:

(1) 新建一个文件夹为 forrange,在创建一个文件为 main.go

package main

import ("fmt"

)

func main() {  //编写一个组函数

//演示 for-range 遍历数组

首先定义一个数组

var heroes [3] string = [3]string{"宋江",“吴用",“卢俊义}

//进行初始化

可以进行优化和类型推导:

heroes :=[…] string {"宋江",“吴用",“卢俊义}  

//注意:必须写上数据类型,否则会报错

//使用常规的方式遍历不进行演示

//使用 for-range 进行遍历

for i, v := range heroes { //i就是下标

fmt.Printf("i=%v  v=%v\n“, i , v) //输出下标 i

执行遍历,输出结果如下:

image.png

可以发现值已经被取出。下标为0的元素值为宋江,下标为1的元素的值为吴用,下标为2的元素的值为卢俊义

//使用传统的方式也可以得到结果,语法上也不会报错

2fmt.Printf( "heroes[%d]=%v\n", i, heroes[i])

}

i=0,元素的值为宋江,i=1时,元素的值为吴用,i=2时,元素的值为卢俊义

3如果指向要下标而不想要值,则可以这样实现:

for _, v := range heroes {

fmt.Printf(”元素的值=%v \ n", v)

}

可以看到元素的值同样可以取出。

4注意:i和v的作用域只在对应的 for 循环中,如果离开了这个环境则 i 和 v 将无法使用,因为这是变量作用域规定好的。

 

四、数组的使用注意事项和细节

1. 数组是多个相同类型数据的组合,一个数组一旦声明/定义了,其长度是固定的,不能动态变化。

2. var arr []int 这时 arr 就是一个 slice 切片,切片后面专门讲解

3. 数组中的元素可以是任何数据类型,包括值类型和引用类型,但是不能用。

4. 数组创建后,如果没有赋值,有默认值

5. 数值类型数组:默认值为0

6. 字符串数组:默认值为“”

7. boal 教组:默认值为 false

8. 使用数组的步骤1.声明数组并开辟空间2.给数组各个元素赋值3.使用数组

9. 数组的下标是从0开始的。

10. 数组下标必须在指定范围内使用,否则报 panic。数组越界,比如

11. var arr [5]int 则有效下标为0-4

12. Go 的数组属值类型,在默认情况下是值传递,因此会进行值拷贝。数组间不会相互影响如想在其它函数中,去修改原来的数组,可以使用引用传递(指针方式)

相关文章
itextpdf 中文不显示问题
# 现象 itextpdf 打印时中文字体显示不出来,莫名其妙的消失不见了。具体现象如下图所示。 ![](https://ata2-img.oss-cn-zhangjiakou.aliyuncs.com/neweditor/ddc69588-4fc6-46ff-9d33-07f99340c963.png) 真正的理想情况如下图。 ![](https://ata2-img.oss-cn-zhangj
itextpdf 中文不显示问题
|
6月前
|
设计模式 算法 架构师
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
京东二面:说下spring中常用的设计模式? (一个 深入骨髓的答案, 面试官跪下了)
|
11月前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
472 17
|
网络协议 Linux 网络安全
如何用阿里云实现内网穿透?如何在外网访问家里内网设备?
使用NPS自建内网穿透服务器教程,带WEB管理
36244 12
如何在不越狱的情况下,获取app中的所有常用文件和文件夹
如何在不越狱的情况下,获取app中的所有常用文件和文件夹
802 1
|
Ubuntu 虚拟化 Windows
将Vmware虚拟机磁盘映射到本地实现文件传输
将虚拟机磁盘映射到本地,可以实现文件互传,更方便使用,在开发时可以替代SecureFx等FTP客户端软件
1364 0
|
Ubuntu Linux Docker
弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门
弃用Docker Desktop:在WSL2中玩转Docker之Docker Engine 部署与WSL入门
21413 4
|
Java 程序员
【日志级别】log4j的8个日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL)
【日志级别】log4j的8个日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、ALL)
5244 0
|
Java Spring 容器
面试突击80:说一下 Spring 中 Bean 的生命周期?
面试突击80:说一下 Spring 中 Bean 的生命周期?
5316 0