和Python 或 C语言不同,Go没有while 循环,它使用了for循环来替代while循环(不过仔细想想,写了这么久代码,while循环也确实不咋用)
C语言中的for循环转换成go里的就是这样
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 21:48:52
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
for i := 0; i < 5; i++ {
fmt.Println("Hello world")
}
}
当然,for也能替代while
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 21:48:52
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
num := 5
for num != 0 {
fmt.Println("Hello world")
num--
}
}
当然也可以写成死循环
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 21:51:26
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
for {
fmt.Println("Hello world")
}
}
你也可以用range来对可迭代对象循环
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 21:53:03
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
strs := [...]string{"Hello", "world", "my", "dear"}
for idx, item := range strs {
fmt.Println(idx, item)
}
}
当然for也是可以嵌套的
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 21:57:16
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var num = 10
for i := 1; i <= num; i++ {
for j := 1; j <= num; j++ {
fmt.Printf("%-4d", i+j-1)
}
fmt.Println()
}
}
既然谈到循环了,当然不缺 break
continue
和 goto
了
break
可用于跳出循环
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 22:03:23
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var num = 10
var end = 0
for i := 1; i <= num; i++ {
if i >= 5 {
fmt.Println(i)
end = i
break
}
}
fmt.Println(end) // end = 5
}
也可以跳出switch语句
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 22:04:07
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var grade string = "A"
switch grade {
case "A":
fmt.Println("优秀")
break
fmt.Println("优秀1") // 这段就不会执行了
case "B":
fmt.Println("良好")
case "C":
fmt.Println("中等")
default:
fmt.Println("不及格")
}
}
也可以使用标号跳出多重循环
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 22:06:57
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var num = 10
re:
for i := 1; i <= num; i++ {
for j := 1; j <= num; j++ {
if i > num/2 {
break re
}
fmt.Printf("%-4d", i+j-1)
}
fmt.Println()
}
}
continue
可用于跳过本次循环
/*
* @Author: NorthCityChen
* @LastEditTime: 2021-08-21 22:18:44
* @Description:
* @Website: https://grimoire.cn
* Copyright (c) NorthCityChen All rights reserved.
*/
package main
import (
"fmt"
)
func main() {
var num = 10
var end = 0
for i := 1; i <= num; i++ {
if i >= 5 {
fmt.Println(i)
end = i
continue
}
}
fmt.Println(end) // end = 10
}
同样的,continue也支持使用标签,但是这里就不演示了,具体可以参考:Go 语言 continue 语句 | 菜鸟教程 (runoob.com)
goto
又是这个鸡肋的功能... 这个可以配合标签实现无条件的跳转,但是常常会造成程序流程的混乱,使程序的理解和调试都产生困难,因此本文不做讲解,具体可以参考
Go 语言 goto 语句 | 菜鸟教程 (runoob.com)
作者:NorthCity1984
出处:https://grimoire.cn/golang/go5.html
版权:本文《Go 学习笔记:循环》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任
出处:https://grimoire.cn/golang/go5.html
版权:本文《Go 学习笔记:循环》版权归作者所有
转载:欢迎转载,但未经作者同意,必须保留此段声明;必须在文章中给出原文连接;否则必究法律责任