美文网首页
6, 控制结构: if,for.swiitch逻辑语句

6, 控制结构: if,for.swiitch逻辑语句

作者: 滔滔逐浪 | 来源:发表于2023-08-01 17:26 被阅读0次

在一个字符串中查找另外一个字符串是否存在,这是其实是字符串查找的功能。

i:=strings.Index("满眼盲目","满眼")

这就是Go语言标准库为我们提供的常用函数,以供我们使用减少开发。

流程控制语句用于控制程序的执行顺序,这样你的程序就具备了逻辑结构。一般的流程控制语句需要和各种条件结合使用,比如用于条件判断 的if,用于选择的switch,用于循环的for等。

if 条件语句

if 语句是条件语句,他根据布尔值的表达式来决定选择那个分支执行:如果表达式的值为true,则if分支被执行,如果表达式的值为false,则else分支被执行。下面看一个if条件语句示例。

package main

import "fmt"

func main() {
    i := 10
    if i > 10 {
        fmt.Println("i>10")
    } else {
        fmt.Println("i<10")
    }
}

这是一个非常简单的if.....else 条件语句,当i >10 为true的时候,if 分支被执行,否则就执行else分支。

关于if条件语句的使用有一些规则:

  1. if 后面的条件语句不需要使用 () ,这和某些编程语言不一样,也更体现Go语言的简洁
    2,每个条件分支(if 或者else)中的大括号是必须的,哪怕大括号里只有一行代码
    3,if 紧跟的大括号 { 不能独占一行,else 前的大括号 } 也不能独占一行,否则会编译不通过;
    4,在if ...else条件语句中还可以增加多个else if,增加更多的分支。
    通过运行代码,会看到输出; 5< i <=10这说明代码中的 else if i >5 && i <=10成立。该分支被执行。


package main

import "fmt"

func main() {
    i := 6
    if i > 10 {
        fmt.Println("i>10")
    } else if i > 5 && i <= 10 {
        fmt.Println("5<i<=10")
    } else {
        fmt.Println("i<10")
    }
}

你可以通过修改 i的初始值,来验证其他分支的执行情况
你还可以增加更多的 else if, 以增加更多的条件分支,不过这种方式不被推荐,因为代码可读性差,多个条件分支可以使用后面提到的switch代替,使代码更加简洁。
和其他编程语言不同,在go语言中的if语句中,可以有一个简单的表达式语句,并将该语句和条件语句使用分号;分开。同样是以上示例。

package main

import "fmt"

func main() {

    if i := 6; i > 10 {
        fmt.Println("i>10")
    } else if i > 5 && i <= 10 {
        fmt.Println("5<i<=10")
    } else {
        fmt.Println("i<10")
    }
}


在 if 关键字之后,i>10 条件语句之前,通过分号 ; 分隔被初始化的 i:=6。这个简单语句主要用来在 if 条件判断之前做一些初始化工作,可以发现输出结果是一样的。

通过if简单语句声明的变量,只能在整个 If....else if ...else条件语句中使用,比如以上示例中的变量i.

switch选择语句
if条件语句比较适合分支较少的情况,如果有很多分支的话,选择switch会更方便,比如有上述示例,用switch改造代码如下:

switch i := 6; {
    case i > 10:
        fmt.Println(":i>10")
    case i > 5 && i < 10:
        fmt.Println("5<i<10")
    default:
        fmt.Println("i<=5")
    }

switch 语句同样也可以使用有个简单的语句来做初始化,同样也是用分号分隔开,每个case就是一个分支,分支条件为true该分支才会执行,而且case分支后的表达式也不用小括号()包裹。

在Go语言中,switch的case从上到下逐一进行判断,一旦满足条件,立即执行对应的分支并返回,其余分支不在判断。也就是说Go语言中的switch 在默认情况下,case最后自带break.这和其他的编程语言不同。比如c 语言在case分支里必须明确的break才能退出case。Go语言的这种设计就是为了防止忘记写break时,下一个case被执行。

那么如果你真的有需要,的确需要执行下一个紧跟的case怎么办呢,case语言也考虑到了,提供了fallthrough关键字。现在看个例子,如下所示:


    switch j := 1; j {
    case 1:
        fallthrough
    case 2:
        fmt.Println("1")
        fallthrough
    default:
        fmt.Println("没有匹配")

以上示例运行会输出1,如果省略 case 1: 后面的 fallthrough,则不会与任何输出。

不知道你是否可以发现,和上一个例子对比,这个例子的 switch 后面是有表达式的,也就是输入了 ;j,而上一个例子的 switch 后只有一个用于初始化的简单语句。

当 switch 之后有表达式时,case后的值就要和这个表达式的结果类型相同,比如这里的j是int 类型,那么case后就只能使用int类型,如示例中case1,case2.如果是其他类型,比如使用case "a" 。会提示类型不匹配,无法编译通过。
而对于 switch 后省略表达式的情况,整个switch结构就如同和if...else条件语句相同了。

switch 后的表达式也没有太多的限制,是一个合法的表达式即可,也不用一定要求是常量或者是整数,你甚至可以像如下代一样,直接把表达式放在switch之后:

switch 2 > 1 {
    case true:
        fmt.Println("2>1")
    case false:
        fmt.Println("2<1")
    }

可见 Go语言的switch语句还是非常强大的

for循环语句

当需要计算1到100的数字之和的时候,如果用代码将一个个数字加起来会很复杂,可读性也不好,这就体现出循环语句的存在价值
下面是一个经典的for循环示例,从这个示例中,我们可以分析出for循环由三部分组成,其中,需要使用2个; 分割,如下所示,


    sum := 0
    for i := 1; i <= 100; i++ {
        sum += i
    }
    fmt.Println("the sum is", sum)

其中:
1.第一部分是一个简单的语句,一般用于for循环的初始化,比如这里声明了一个变量,并对i:=1 初始化;
2, 第二部分是 for循环的条件,也就是说,他表示for循环什么时候结束,这里的条件是i<=100;
3 ,第三部分是更新语句,一般用于更新循环的数量,比如这里的i++,这样才能达到递增循环的目的。
需要特别留意的是,Go语言里的for非常强大,以上三部分组成都不是必须的,可以被省略。

如果以前学的编程语言,可能会见到while这样的循环语句,在Go语言中没有while循环,但是可以通过for 达到while的效果,如以下代码所示

sum:=0
    i := 1
    for i <= 100 {
        sum += i
        i++
    }
    fmt.Println("the sum is sum ", sum)


这个实例和上面的for示例的效果是一样的,但是这里的for后只有i<=100 这一个条件语句。也就是达到了while的效果
在Go语言中,同样支持使用continue,break 控制for循环:
1, continue可以跳出本次循环,继续执行下一个循环
2,break 可以跳出整个for循环,哪怕for循环没有执行完也会被强制终止

现在我们对上面计算100以内整数和的示例在进行修改 演示break的用法,如下;

sum:=0

i:=1
    for {
        sum += i
        i++
        if i > 100 {
            break
        }

    }
    fmt.Println("the sum is sum ", sum)

这个示例使用的是没有任何条件的for循环,也称为for无限循环,此外,使用break 退出无限循环,条件是i>100.

总结
这节课主要讲解 if, for, swtch这样的控制语句的基本的用法,使用他们,你可以更好的控制程序的逻辑结构,达到业务需求的目的

相关文章

  • Python程序结构

    2018年6月27日笔记 python流程控制 1.python流程控制语句结构 4种流程控制语句结构:ifif ...

  • 3.1-全栈Java笔记:Java控制语句 (上)选择结构篇

    我们需要开始学习控制语句,控制语句分为两类:选择和循环。 “选择结构”代表“如果…,则…”的逻辑。 比如,如果女朋...

  • Java控制语句

    1.控制语句介绍 控制语句:是用来控制程序中各语句执行顺序的语句。 顺序结构 选择结构 循环结构 2.选择结构 i...

  • [JS基础]笔记四

    js流程控制语句 流程控制 顺序结构、分支结构、循环结构 分支结构 if 分支结构 if else 双分支结构语句...

  • 控制语句

    Java语言中控制语句可以分为7种,①控制选择结构语句 If , If else ,switch ②控制循环结构...

  • 控制语句

    Java支持以下控制结构:条件控制语句:if,if - else,if - else if,switch循环语句:...

  • 控制语句

    控制语句 控制语句分为三类:顺序、选择和循环。 选择结构 主要的选择结构有:if选择结构和switch多选择结构。...

  • GO语言——条件判断与基础函数(2)

    一、流程控制 程序设计语言的流程控住语句,用于设定计算执行的次序,建立程序的逻辑结构。可以说,流程控制语句是整个程...

  • Java入门到放弃--第四课--控制结构

    1、控制结构概述控制结构是控制程序如何运行的特殊的语句结构。控制结构可以分为:顺序控制结构,分支控制结构和循环控制...

  • 编写Shell脚本---流程控制语句

    [TOC] 流程控制语句 1 if条件测试语句 if语句分为三种结构: 单分支结构 双分支结构 多分支结构 1.1...

网友评论

      本文标题:6, 控制结构: if,for.swiitch逻辑语句

      本文链接:https://www.haomeiwen.com/subject/pczypdtx.html