Go --- continue标签跳转

简介: Go --- continue标签跳转

原来我们也可以使用continue进行标签跳转,长见识了。

总结,只能跳出本次循环,但是可以跳出本次多层循环,可以用来写素数或是相似思路的代码。

goto:

我们可以使用goto将代码执行顺序改变,但是标签位置有限制,如我们不能在一个循环中使用goto到另一个循环中,但是却可以跳出本身所在的循环。

即goto的标签位置应该在当前作用域或是上层作用域。

package main
import "fmt"
func main() {
//a:
//  一些判断条件
//  for i := 0; i < 5; i++ {
//    fmt.Println(i)
//    goto a
//  }
  for i := 0; i < 5; i++ {
    goto b
  }
  //  done something
b:
  fmt.Println("跳出循环")
}

当然,并不建议向上跳出循环,因为如果不给出判断条件,程序将一直处于进入循环的状态,也就是卡死了。

continue:

学习流程控制是避不开continue的,它代表着忽略本次循环后续代码,直接进行下次循环,一般是单独使用。但它在go语言中是可以和标签配合使用的。

package main
import "fmt"
// 测试goto 和 continue
func main() {
a:
  for i := 0; i < 5; i++ {
    fmt.Println(i)
    continue a
  }
}

与goto的标签不同的是,continue的标签只能在循环体的上方,而且标签和循环体之间不能有其余带代码。

这么看和普通的coutinue没什么不同,那么使用标签的continue有什么用呢?

我们可以使用continue跳过本次的多层循环!!!

如我们可以使用continue的这个特性写个生成100以内素数的代码。

package main
import "fmt"
// 测试goto 和 continue
func main() {
  sum := 0
a:
  for outer := 2; outer < 100; outer++ {
    for inner := 2; inner < outer; inner++ {
      if outer%inner == 0 {
        continue a
      }
    }
    sum++
    fmt.Printf("第%d个素数:%d\n", sum, outer)
  }
}

感谢阅读。



相关文章
|
3月前
|
Go
Go 重构:尽量避免使用 else、break 和 continue
Go 重构:尽量避免使用 else、break 和 continue
|
5月前
|
Go 数据库
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
|
6月前
|
程序员 Go 开发者
Go语言中的跳转控制结构:`goto`、`break` 和 `continue`
【2月更文挑战第3天】在Go语言中,跳转控制结构允许程序员直接控制程序的执行流程,通过`goto`、`break`和`continue`关键字实现代码的跳转、退出循环或跳过循环的某次迭代。本文将深入探讨这些跳转控制结构的使用场景、注意事项以及最佳实践,帮助读者更好地理解和应用Go语言中的跳转控制结构。
|
Go
这些套路,教你灵活运用Go语言continue语句
这些套路,教你灵活运用Go语言continue语句
90 0
|
Java Go C++
三分钟学 Go 语言——循环语句的多种形式、死循环、break/continue
三分钟学 Go 语言——循环语句的多种形式、死循环、break/continue
三分钟学 Go 语言——循环语句的多种形式、死循环、break/continue
|
Go C++
Go-分支和循环总结(if、else、switch、for、range、continue、break等)
Go-分支和循环总结(if、else、switch、for、range、continue、break等)
113 0
Go-分支和循环总结(if、else、switch、for、range、continue、break等)
|
Go 索引
Go基础:range、循环控制Goto、Break、Continue
Go基础:range、循环控制Goto、Break、Continue
281 0
|
Go
go continue label,go continue re,go break label,go break re,go循环标记
go continue label,go continue re,go break label,go break re,go循环标记
127 0
|
3天前
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
18 7