以下笔记摘录自『 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...
环境 Windows 10 21H1 Visual Studio 2019 x64dbg Aug 2...
前面几天连续介绍有线与无线的应用,多数家中或单位的网路就都从这些应用做拓展。让透天每层楼都有网路、w...
Traces - 观察应用程序的效能瓶颈 系列文章 (1/6) - Elastic APM 基本介绍...
前言 该系列是为了让看过Vue官方文件或学过Vue但是却不知道怎麽下手去重构现在有的网站而去规画的系...