Golang 的 for 语句和其他语言的有相同的地方,也有不一样的地方。它存在如下三种基本形式:
for 的几种形式
// 和 C 语言的 for 类似
for init; condition; post { }
// 和 C 语言的 while 类似,所以,Go 中没有 while /do while
for condition { }
// 和 C 语言的 for(;;) 或 while(true) 类似,用于死循环
for { }
for .. range ..
除此之外,Go 还有类似一些语言中的 foreach 循环:for ... range ... 此时,range 后面只能是:array、slice、map 或 channel
for .. range .. 它也有几种形式
1. 对于 array、slice 和 map 来说,for 后面可以接收 1 个或 2 个值,第一个值是 索引或 key,第二个值是 value,我们可以只需要第一个值,如:
for i := range slice {}
或只需要第二个值:
for _, v := range slice {}
2. 如果 range 后面是 channel,则 for 后面只接收一个值,如:
for c := range ch {}
3. 还有一种是 Go 后面版本加的,即 for 后面可以不接受任何值,只是用来循环,如:
for range slice {}
Go 的语法变迁,可以看看此文:Go1到Go1.10的语法变迁
我们是专注 Go语言在国内推广的中文社区,欢迎关注我们。