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

举报
我是小白呀iamarookie 发表于 2021/09/10 00:35:59 2021/09/10
2.3k+ 0 0
【摘要】 【Golang】✔️走进 Go 语言✔️ 第十三课 range & map 概述Range例 1例 2 map例 1例 2例 3 概述 Golang 是一个跨平台的新生编程...

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

概述

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

在这里插入图片描述

Range

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

格式:

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

  
 

在这里插入图片描述

例 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 是使用哈希表来实现的.

在这里插入图片描述

例 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)
	}

}

  
 

输出结果:

元素存在 大白

  
 

在这里插入图片描述

文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。

原文链接:iamarookie.blog.csdn.net/article/details/119689272

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。