【Golang】✔️走进 Go 语言✔️ 第十三课 range & map

概述

Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 13 课)

【Golang】✔️走进 Go 语言✔️ 第十三课 range & map_迭代

Range

Go 语言中 range 关键字用于 for 循环中迭代数组, 切片, 通道或集合的元素. 在数组和切片中 range 会返回元素的索引和索引对应当值. 在集合中返回 key-value 对的 key 值.

格式:

for index, value := range 数组/切片/通道/集合 {
	循环体
}

【Golang】✔️走进 Go 语言✔️ 第十三课 range & map_数组_02

例 1

例子:

package main

import "fmt"

func main() {

	// 创建切片
	var array = []int {1, 2, 3, 4}

	// range使用
	for index, value := range array {
		fmt.Println("index:", index, "value:", value)
	}
	
}

输出结果:

index: 0 value: 1
index: 1 value: 2
index: 2 value: 3
index: 3 value: 4

例 2

实现数组求和:

import "fmt"

func main() {

	// 创建数组
	var array = [5]int {1, 2, 3, 4}

	// 创建变量
	var sum = 0

	// range使用
	for _, value := range array {
		sum += value
	}

	// 调试输出数组和
	fmt.Print("数组之和: ", sum)

}

输出结果:

数组之和: 10
map

集合 (map) 是一种无序的键值对的集合. map 最重要的一点就是通过 key 来快速检索数据. key 类似于索引, 指向数据的值. map 是一种集合, 所以我们可以像迭代数组和切片那样迭代它. 不过 map 是无序的, 所以我们无法觉得它的返回顺序, 这是因为 map 是使用哈希表来实现的.

【Golang】✔️走进 Go 语言✔️ 第十三课 range & map_Go_03

例 1

格式:

/* 声明变量,默认 map 是 nil */
var map_variable map[key_data_type]value_data_type

例子:

package main

import "fmt"

func main() {

	// 定义map
	var student_map = map[string]string{"学生1": "小白", "学生2": "中白", "学生3": "大白"}

	// 调试输出
	fmt.Println(student_map)

}

输出结果:

map[学生1:小白 学生2:中白 学生3:大白]

例 2

格式:

/* 使用 make 函数 */
map_variable := make(map[key_data_type]value_data_type)

例子:

package main

import "fmt"

func main() {

	// 定义map
	var student_map = make(map[string]string)


	// map赋值
	student_map["学生1"] = "lalalallalalla"
	student_map["学生1"] = "小白"
	student_map["学生2"] = "中白"
	student_map["学生3"] = "大白"

	// 调试输出
	fmt.Println(student_map)

}

输出结果:

map[学生1:小白 学生2:中白 学生3:大白]

我们可以看到 “lalalalalalal” 并没有输出, 因为 map 的 key 和值是一一对应的.

例 3

判断元素是否存在:

package main

import "fmt"

func main() {

	// 创建map
	var student_map = make(map[string]string)

	// map赋值
	student_map["学生1"] = "小白"
	student_map["学生2"] = "中白"
	student_map["学生3"] = "大白"

	// 判断元素是否存在于map之内
	student, flag := student_map["学生3"]

	if flag {
		fmt.Println("元素存在", student)
	} else {
		fmt.Println("元素不存在", student)
	}

}

输出结果:

元素存在 大白

【Golang】✔️走进 Go 语言✔️ 第十三课 range & map_迭代_04