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

相关文章
|
11月前
逆序遍历List集合
逆序遍历List集合
40 0
给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度?
给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度?
282 0
给定一个数组nums和一个值val,你需要原地移除所有数值等于val的元素,并返回移除后数组的新长度?
|
机器学习/深度学习 算法 索引
数据结构与算法__02--斐波那契查找、数组中元素个数的说明为F[k]-1
代码中数组中元素个数的说明为F[k],经过分析我们可以发现实际使用的只有F[k]-1,所以temp数组中元素个数为F[k]-1更为合理。
|
Scala 开发者
Map 的遍历 | 学习笔记
快速学习 Map 的遍历
79 0
|
开发者 索引 Python
Array 数组|学习笔记
快速学习 Array 数组
74 0
|
缓存 Go 开发者
map 的遍历 | 学习笔记
快速学习 map 的遍历
82 0
|
Go 开发者
切片的遍历 | 学习笔记
简介:快速学习切片的遍历
79 0
切片的遍历 | 学习笔记
|
PHP
【PHP】array_flip()将数组的键和值反转 array_intersect_key()返回俩个数组的交集
【PHP】array_flip()将数组的键和值反转 array_intersect_key()返回俩个数组的交集
81 0
【PHP】array_flip()将数组的键和值反转 array_intersect_key()返回俩个数组的交集
|
Web App开发 算法 搜索推荐
数组的 sort() 方法详解
纸上得来终觉浅,绝知此事要躬行!
183 0
数组的 sort() 方法详解
|
C语言 UED
[解题报告]【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标
[解题报告]【第30题】给定 n 个元素的升序整型数组,再给出一个值 target,求实现一个函数查找 nums 中 target 的下标