循环
Go 语言中的循环
for
Go 的 for 循环类似于 C,但却不尽相同。它统一了 for 和 while,不再有 do-while 了。它有三种形式,但只有一种需要分号。
// 如同C的for循环
for init; condition; post { }
// 如同C的while循环
for condition { }
// 如同C的for(;;)循环
for { }
Go 没有逗号操作符,而 ++ 和 – 为语句而非表达式。因此,若你想要在 for 中使用多个变量,应采用平行赋值的方式(因为它会拒绝 ++ 和 –).
// 反转 a
for i, j := 0, len(a)-1; i < j; i, j = i+1, j-1 {
a[i], a[j] = a[j], a[i]
}
range
若你想遍历数组、切片、字符串或者映射,或从信道中读取消息,range 子句能够帮你轻松实现循环。
for key, value := range oldMap {
newMap[key] = value
}
若你只需要该遍历中的第一个项(键或下标),去掉第二个就行了:
for key := range m {
if key.expired() {
delete(m, key)
}
}
若你只需要该遍历中的第二个项(值),请使用空白标识符,即下划线来丢弃第一个值:
sum := 0
for _, value := range array {
sum += value
}
空白标识符可被赋予或声明为任何类型的任何值,而其值会被无害地丢弃。它有点像 Unix 中的 /dev/null 文件:它表示只写的值,在需要变量但不需要实际值的地方用作占位符。