golang学习笔记8:控制结构

编程老司机 · · 1457 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

if-else 结构

if condition1 { // do something}

else if condition2 { // do something else}

else { // catch-all or default}

关键字 if 和 else 之后的左大括号 { 必须和关键字在同一行,如果你使用了 else-if 结构,则前段代码块的右大括号 } 必须和 else-if 关键字在同一行。这两条规则都是被编译器强制规定的。

多返回值函数

func   mySqrt(f float64)(v float64, okbool){

iff <0 { return }  // error case

return math.Sqrt(f),true}

func main(){

t, ok := mySqrt(25.0)

if ok {    fmt.Println(t)    }

}

switch 结构

package main

import "fmt"

func main() {  

 var num1 int = 100  

switch num1 {

case 98, 99:

fmt.Println("It's equal to 98")

case 100:

fmt.Println("It's equal to 100")

default:

   fmt.Println("It's not equal to 98 or 100")  

  }}


输出:It's equal to 100

如果在执行完每个分支的代码后,还希望继续执行后续分支的代码,可以使用 fallthrough 关键字来达到目的。

 可选的 default 分支可以出现在任何顺序,但最好将它放在最后。它的作用类似与 if-else 语句中的 else,表示不符合任何已给出条件时,执行相关语句。

switch 语句的还可以包含一个初始化语句。

在下面这个代码片段中,变量 a 和 b 被平行初始化,然后作为判断条件:

switch a, b := x[i], y[j]; {

case a < b: t = -1    case a == b: t = 0    case a > b: t = 1

}

for结构

package main

import "fmt"

func main() {

for i := 0; i < 5; i++ {

       fmt.Printf("This is the %d iteration\n", i)  

 }}


Break 与 continue

一个 break 的作用范围为该语句出现后的最内部的结构,它可以被用于任何形式的 for 循环(计数器、条件判断等)。但在 switch 或 select 语句中,break 语句的作用结果是跳过整个代码块,执行后续的代码。
关键字 continue 忽略剩余的循环体而直接进入下一次循环的过程,但不是无条件执行下一次循环,执行之前依旧需要满足循环的判断条件。
另外,关键字 continue 只能被用于 for 循环中。

标签与 goto

for、switch 或 select 语句都可以配合标签(label)形式的标识符使用,即某一行第一个以冒号(:)结尾的单词(gofmt 会将后续代码自动移至下一行)。

(标签的名称是大小写敏感的,为了提升可读性,一般建议使用全部大写字母)

package main

import "fmt"

func main() {LABEL1:

for i := 0; i <= 5; i++ {

for j := 0; j <= 5; j++ {

if j == 4 {    continue  LABEL1            }

       fmt.Printf("i is: %d, and j is: %d\n", i, j)        }  

 }}

本例中,continue 语句指向 LABEL1,当执行到该语句的时候,就会跳转到 LABEL1 标签的位置。

您可以看到当 j==4 和 j==5 的时候,没有任何输出:标签的作用对象为外部循环,因此 i 会直接变成下一个循环的值,而此时 j 的值就被重设为 0,即它的初始值。如果将 continue 改为 break,则不会只退出内层循环,而是直接退出外层循环了。另外,还可以使用 goto 语句和标签配合使用来模拟循环。

package main

func main() {  

 i:=0    

HERE:     print(i)      i++

if i==5 {   return }    

   goto HERE

}




有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:编程老司机

查看原文:golang学习笔记8:控制结构

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1457 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传