语言基础之流程控制if分支

语言基础之流程控制if分支

一、if else(分支结构)

if条件判断基本写法

Go语言中if条件判断的格式如下:

if 表达式1 {
    分支1
} else if 表达式2 {
    分支2
} else{
    分支3
}

当表达式1的结果为true时,执行分支1,否则判断表达式2,如果满足则执行分支2,都不满足时,则执行分支3。 if判断中的else ifelse都是可选的,可以根据实际需要进行选择。

Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{放在其他位置会触发编译错误。 同理,与else匹配的{也必须与else写在同一行,else也必须与上一个ifelse if右边的大括号在同一行。

举个例子:

func ifDemo1() {
    score := 65
    if score >= 90 {
        fmt.Println("A")
    } else if score > 75 {
        fmt.Println("B")
    } else {
        fmt.Println("C")
    }
}

由于 if{…} else {…} 是一个单独的语句,它的中间不应该出现分号。因此,需要将 else 语句放置在 } 之后处于同一行中。

将 else 语句移动到 if 语句结束后 } 的后面,以防止分号的自动插入。

二、if条件判断特殊写法

if statement; condition {  
    
}

if条件判断还有一种特殊的写法,可以在 if 表达式之前添加一个执行语句,再根据变量值进行判断,举个例子:

func ifDemo2() {
    if score := 65; score >= 90 {
        fmt.Println("A")
    } else if score > 75 {
        fmt.Println("B")
    } else {
        fmt.Println("C")
    }
    // fmt.Println(score) # 报错
}
// score 

在上面的程序中,scoreif 语句中进行初始化,score 只能从 ifelse 中访问。也就是说 score 的范围仅限于 if else 代码块。如果我们试图从其他外部的 if 或者 else 访问 score,编译器会不通过。

思考题: 上下两种写法的区别在哪里? 作用域不同,特殊写法中声明的score只能在if判断内部使用

三、总结

  1. 单分支结构,
  2. 多分支结构
  3. 条件的变形使用
  4. 注意分支的结构编写方式
if 条件{
  内容
}else if 条件{
  
}else{
  
}


# 特殊的
if 初始化;条件{
  内容
  初始化的内容只在内部有效
}
posted @ 2021-10-15 07:45  RandySun  阅读(106)  评论(0编辑  收藏  举报