[Day 12] -『 GO语言学习笔记』- for range 回圈

以下笔记摘录自『 The Go Workshop 』。

Go语言只支援一种回圈回圈叙述,就是for回圈。

Go语言的阵列(Array)及切片(Slice)两种集合型别很适用for i 的回圈,因为键与值会照顺序排列,所以可以使用for i来走访,如以下:

for <起始赋值叙述>; <条件叙述> ; <结束叙述> {
    <程序区块>
}

For example,

package main

import "fmt"

func main() {
	names := []string{"Jim", "Jane", "Joe", "June"}
	for i := 0; i < len(names); i++ {
		fmt.Println(names[i])
	}
}

//output
Jim
Jane
Joe
June

但若是映射表(Map)这类的集合型别,键与值不会照顺序排列,使用for i就不便利,所以必须使用for range回圈,这相当於一些语言的for each或 for in回圈,每次从集合取出一组值,走访後回圈及结束,如下:

for <键>, <值> := range <集合> {
    <程序区块>
}

如果再回圈用不到key或value变数,可以在接收时写成底线字元_

for _, value := range config {
    fmt.PrintLn(value)
}

如果只想取出键,则可以省略第二个变数不写,这写法等同於for key, _ := range config

for key := range config {
    fmt.PrintLn(value)
}

range其实也可以用在阵列或切片,在这种情况下key是元素索引,value是元素值。


names := []string{"Jim", "Jane", "Joe", "June"}
	for i, value := range names {
		fmt.Println("Index", i, "=", value)
	}

这样做跟for i的效果一样,而且不需要自习计算集合长度,也就是不需要用到len(),程序变得比较简洁。并且,使用range走访阵列或切片会保证按照索引顺序输出。

但若要再回圈中修改原始集合内的元素,就仍得使用name[i],因为value是个在回圈内建立的独立变数,与原集合没有关系。


<<:  Day26 - 铁人付外挂测试验收(二) - 导入单元测试

>>:  自动化测试,让你上班拥有一杯咖啡的时间 | Day 12 - 如何下载档案

表单攻略前准备

这需要一个完整的例子。 我先依照先前讲的把程序码先准备好 先看画面 准备了两个页面: User, U...

【Day 09】Hook 的奇妙冒险 - Ring3 Hook

环境 Windows 10 21H1 Visual Studio 2019 x64dbg Aug 2...

Day_14 Router/Switch/Gateway/NAT

前面几天连续介绍有线与无线的应用,多数家中或单位的网路就都从这些应用做拓展。让透天每层楼都有网路、w...

17 - Traces - 观察应用程序的效能瓶颈 (1/6) - Elastic APM 基本介绍

Traces - 观察应用程序的效能瓶颈 系列文章 (1/6) - Elastic APM 基本介绍...

[重构倒数第18天] - 我如何再Vue里面使用axios有效管理API

前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...