可以对slice、map、数组、字符串等进行迭代循环。格式如下: for key, value := range oldMap {
newMap[key] = value
}
在Go语言中,仅仅可以用一个for不加任何条件的执行循环,如果for循环内部没有break语句,它会一直循环下去
Go语言的关键字也可以实现其它编程语言里while的功能,比如定义一个变量a,当a>=20时就跳出循环,否则一直循环下去。
细节说明:
如果我们在遍历一个字符串时,字符串中含有中文,那么传统的遍历字符串方式for(i :=0; i<len(str);i++)是错误的,会出现乱码。原因是传统的对字符串的遍历是按照字节来遍历,而一个汉字在utf8编码是对应3个字节。
如何解决?
1.需要将str转成[]rune切片
2.对应for-range遍历方式而言,是按照字符方式遍历的。因此如果字符串中有中文,也是可以的。
break
break语句用于终止某个语句块的执行,用于中断当前for循环或跳出switch语句。break是跳出整个循环。
break语句出现在多层嵌套的语句块中时,可以通过标签指明要终止的是哪一层语句块。
package main
import "fmt"
func main() {
//label1:
for i := 0; i < 4; i++ {
label2:
for j := 0; j < 5; j++ {
if j == 2 {
//break //break默认会跳出最近的循环
//break label1;
break label2;
}
fmt.Println("j = ", j)
}
}
}
continue
continue语句用于结束本次循环,继续执行下一次循环。
continue语句出现在多层嵌套的循环语句体中时,可以通过标签知名要跳过的是哪一层循环,这个和前面的break + 标签的使用规则一样。
goto
- Go语言的goto语句可以无条件地转移到程序中指定的行。
- goto语句通常与条件语句配合使用。可以用来实现条件转移,跳出循环体等功能。
- 在Go程序设计中一般不主张使用goto语句,以免造成程序流程的混乱,使理解和调试程序都产生困难。
语法:
goto label
label: statement
示例:
package main
import "fmt"
func main() {
fmt.Println(1);
goto label1
fmt.Println(2);
fmt.Println(3);
fmt.Println(4);
label1:
fmt.Println(5);
}
//输出结果
1
5