Golang 是一个跨平台的新生编程语言. 今天小白就带大家一起携手走进 Golang 的世界. (第 13 课)
RangeGo 语言中 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)
}
}
输出结果:
元素存在 大白