golang中的流程控制代码+注释


在golang中,我们可以使用各种控制流程来控制程序的执行流程。本文将对golang中的if/else、switch、for循环和goto语句进行讲解,并提供相应的代码和注释。

01-if/else语句

if/else语句是golang中最基本的控制流程之一。它的语法如下:

if condition {
    // do something
} else {
    // do something else
}

其中,condition是一个布尔表达式,如果它的值为true,则执行if语句后面的代码块;否则,执行else语句后面的代码块。

下面是一个简单的例子,它根据用户输入的数字判断它是奇数还是偶数:

package main

import (
    "fmt"
)

func main() {
    var num int
    fmt.Print("Enter a number: ")
    fmt.Scanln(&num)

    if num%2 == 0 {
        fmt.Println(num, "is even")
    } else {
        fmt.Println(num, "is odd")
    }
}

在这个例子中,我们使用了if/else语句来判断num是否为偶数。如果是,我们输出"num is even";否则,输出"num is odd"。

常见的有关if的分支结构案例

- 基本的if/else结构

package main

import "fmt"

func main() {
    num := 10
    if num%2 == 0 {
        fmt.Println(num, "is even")
    } else {
        fmt.Println(num, "is odd")
    }
}

注释:

第3行:定义一个整型变量num,并赋值为10。
第4行:使用if语句判断num是否为偶数,如果是,则输出"num is
even";否则,输出"num is odd"。

- 嵌套的if/else结构

package main

import "fmt"

func main() {
    num1 := 10
    num2 := 20

    if num1 > 0 {
        if num2 > 0 {
            fmt.Println("Both numbers are positive")
        } else {
            fmt.Println("num2 is negative")
        }
    } else {
        fmt.Println("num1 is negative")
    }
}

注释:

第3、4行:定义两个整型变量num1和num2,并分别赋值为10和20。
第6行:使用嵌套的if语句判断num1和num2是否都为正数,如果是,则输出"Both numbers are
positive";否则,根据num2是否为负数输出"num2 is negative"或者"num1 is negative"。

-if/else if结构

package main

import "fmt"

func main() {
    num := 75

    if num >= 90 {
        fmt.Println("A")
    } else if num >= 80 {
        fmt.Println("B")
    } else if num >= 70 {
        fmt.Println("C")
    } else if num >= 60 {
        fmt.Println("D")
    } else {
        fmt.Println("F")
    }
}

注释:

第3行:定义一个整型变量num,并赋值为75。
第5-10行:使用if/else if结构判断num所属的成绩等级,并输出相应的字母等级。

-if语句中的短路

package main

import "fmt"

func main() {
    num := 10

    if num > 0 && num < 100 {
        fmt.Println("num is between 0 and 100")
    }
}

注释:

第3行:定义一个整型变量num,并赋值为10。 第5行:使用if语句判断num是否在0和100之间,如果是,则输出"num isbetween 0 and 100"。
第5行中的"&&"表示逻辑与运算符,如果前面的条件为false,则后面的条件不会被执行,这就是if语句中的短路现象。

-if语句中的多个条件

package main

import "fmt"

func main() {
    num1 := 10
    num2 := 20

    if num1 > 0 && num2 > 0 {
        fmt.Println("Both numbers are positive")
    } else if num1 < 0 || num2 < 0 {
        fmt.Println("At least one number is negative")
    }
}

注释:

第3、4行:定义两个整型变量num1和num2,并分别赋值为10和20。
第6行:使用if语句判断num1和num2是否都为正数,如果是,则输出"Both numbers are positive"。
第7行:如果num1和num2中至少有一个为负数,则输出"At least one number is negative"。
第7行中的"||"表示逻辑或运算符,如果前面的条件为true,则后面的条件不会被执行,这也是if语句中的短路现象。

02-switch语句

switch语句是golang中另一个常用的控制流程。它的语法如下:

switch expression {
case value1:
    // do something
case value2:
    // do something else
default:
    // do something if none of the above cases match
}

其中,expression是一个表达式,它的值将与每个case后面的值进行比较。如果它们相等,则执行相应的代码块。如果没有任何一个case与expression的值匹配,则执行default语句后面的代码块。

下面是一个例子,它根据用户输入的数字输出相应的星期几:

package main

import (
    "fmt"
)

func main() {
    var day int
    fmt.Print("Enter a number between 1 and 7: ")
    fmt.Scanln(&day)

    switch day {
    case 1:
        fmt.Println("Monday")
    case 2:
        fmt.Println("Tuesday")
    case 3:
        fmt.Println("Wednesday")
    case 4:
        fmt.Println("Thursday")
    case 5:
        fmt.Println("Friday")
    case 6:
        fmt.Println("Saturday")
    case 7:
        fmt.Println("Sunday")
    default:
        fmt.Println("Invalid input")
    }
}

在这个例子中,我们使用了switch语句来根据用户输入的数字输出相应的星期几。如果用户输入的数字不在1到7之间,我们输出"Invalid input"。

03- for循环

for循环是golang中最常用的控制流程之一。它的语法如下:

for initialization; condition; post {
    // do something
}

其中,initialization是一个语句,用于初始化循环变量;condition是一个布尔表达式,它的值用于判断循环是否继续执行;post是一个语句,用于更新循环变量的值。

下面是一个例子,它使用for循环来计算1到10的和:

package main

import (
    "fmt"
)

func main() {
    sum := 0
    for i := 1; i <= 10; i++ {
        sum += i
    }
    fmt.Println("Sum of 1 to 10 is", sum)
}

在这个例子中,我们使用了for循环来计算1到10的和。我们使用i作为循环变量,从1到10遍历所有数字,并将它们相加。

循环中的常见案例

下面是golang中各种循环结构的案例代码,并附带注释:

-for循环

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println(i)
    }
}

注释:

3行:使用for循环,循环变量i的初始值为0,循环条件为i小于5,循环体中每次输出i的值。
第4行:循环变量i每次自增1,直到i等于5时,循环结束。

-while循环

package main

import "fmt"

func main() {
    i := 0
    for i < 5 {
        fmt.Println(i)
        i++
    }
}

注释:

3行:定义一个整型变量i,并赋值为0。
第4行:使用for循环,循环条件为i小于5,循环体中每次输出i的值。
第5行:循环变量i每次自增1,直到i等于5时,循环结束。

-range循环

package main

import "fmt"

func main() {
	// range后可以跟  数组 字符串 切片 管道
    numbers := []int{1, 2, 3, 4, 5}
    for index, value := range numbers {
        fmt.Println("Index:", index, "Value:", value)
    }
}

注释:

3行:定义一个整型切片numbers,并初始化为{1, 2, 3, 4, 5}。
第4行:使用range循环,循环变量index表示当前元素的索引,变量value表示当前元素的值。
第5行:循环体中输出当前元素的索引和值。

-break语句

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        if i == 3 {
            break
        }
        fmt.Println(i)
    }
}

注释:

3行:使用for循环,循环变量i的初始值为0,循环条件为i小于5,循环体中每次输出i的值。
第4-6行:使用if语句判断i是否等于3,如果是,则使用break语句跳出循环。
第7行:循环体中每次输出i的值,但在i等于3时,循环被break语句跳出,因此不会输出3及之后的数字。

-continue语句

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        if i == 3 {
            continue
        }
        fmt.Println(i)
    }
}

注释:

3行:使用for循环,循环变量i的初始值为0,循环条件为i小于5,循环体中每次输出i的值。
第4-6行:使用if语句判断i是否等于3,如果是,则使用continue语句跳过本次循环。
第7行:循环体中每次输出i的值,但在i等于3时,continue语句跳过了本次循环,因此不会输出3,但会继续执行后续的循环。

04-goto语句

goto语句是golang中最不常用的控制流程之一。它的语法如下:

goto label
...
label: statement

其中,label是一个标识符,它用于标记一个语句;statement是一个语句,它将在goto语句跳转到label时执行。

下面是一个例子,它使用goto语句来跳转到标记为"end"的语句:

package main

import (
    "fmt"
)

func main() {
    i := 0

loop:
    if i < 10 {
        fmt.Println(i)
        i++
        goto loop
    }

end:
    fmt.Println("End of program")
}

在这个例子中,我们使用了goto语句来跳转到标记为"end"的语句。我们使用一个标记为"loop"的语句来实现一个简单的循环,打印出数字0到9。

总结:

在本文中,我们讲解了golang中的if/else、switch、for循环和goto语句,并提供了相应的代码和注释。这些控制流程是golang中最基本和最常用的控制流程,掌握它们对于编写高质量的golang代码非常重要。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值