循环

Go语言中的循环

for

Gofor循环类似于C,但却不尽相同。它统一了forwhile,不再有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文件:它表示只写的值,在需要变量但不需要实际值的地方用作占位符。

上一页