# 编程 分支模型(条件选择)


## 单分支

```go
if 布尔表达式 {
   /* 在布尔表达式为 true 时执行 */
} else {
  /* 在布尔表达式为 false 时执行 */
}
```

```go
// 单分支
// 判断分数 及格还是不及格
var score int = 59
if score >= 60 {
    println("及格")
} else {
    println("不及格")
}
```

## 多分支

```go
if 布尔表达式 1 {
   /* 在布尔表达式 1 为 true 时执行 */
} else if 布尔表达式 2 {
   /* 在布尔表达式 1 为 true 时执行 */
} else if 布尔表达式 n {
   /* 在布尔表达式 1 为 true 时执行 */
} else {
   /* 以上条件都不满足时执行 */
}
```

```go
score = 85
// 多分支
// 判断分数 优秀 良好 中等 及格 不及格
if score >= 90 {
    println("优秀")
} else if score >= 80 {
    println("良好")
} else if score >= 70 {
    println("中等")
} else if score >= 60 {
    println("及格")
} else {
    println("不及格")
}
```

## 嵌套

```go
// 身高1.8m以上, 25 ~ 35岁, 男
func (p *Person) Passed() bool {
	if p.height > 1.8 {
		if p.age > 25 && p.age <= 35 {
			if p.gender == "male" {
				return true
			}
		}
	}
	return false
}
```

## 多分支优化语法(switch case)

多分支模型的优化语法

```go
score = 85
// 多分支
// 判断分数 优秀 良好 中等 及格 不及格
if score >= 90 {
    println("优秀")
} else if score >= 80 {
    println("良好")
} else if score >= 70 {
    println("中等")
} else if score >= 60 {
    println("及格")
} else {
    println("不及格")
}
```

```go
// switch 多分支 进行重写
switch {
case score >= 90:
    println("优秀")
case score >= 80:
    println("良好")
case score >= 70:
    println("中等")
case score >= 60:
    println("及格")
default:
    println("不及格")
}
```

## 多分支 并行执行

```go
// switch 多分支 进行重写
switch {
case score >= 90:
    println("优秀")
case score >= 80:
    println("良好")
    fallthrough
case score >= 70:
    println("中等")
case score >= 60:
    println("及格")
    fallthrough
default:
    println("不及格")
}
```



