---
# System prepended metadata

title: section4　高度な制御文
tags: [1日で基本が身につくGo言語]

---

# section4　高度な制御文

# 論理積・論理和を用いたif文

「&&」を用いた論理積、「||」を用いた論理和の士気もそれぞれ、trueかfalseを返すため、if文での評価に用いて処理の条件を細かく設定することが可能である。


```go
package main

import "fmt"

func main() {
	scores := [5][3]int{
		{20, 98, 40},
		{70, 65, 62},
		{35, 39, 38},
		{82, 96, 48},
		{92, 87, 85},
	}

	for i := 0; i < 5; i++ {
		total := scores[i][0]+scores[i][1]+scores[1][2] > 179
		balance := scores[i][0] > 59 && scores[i][1] > 59 &&
			scores[1][2] > 59
		talent := scores[i][0] > 89 || scores[i][1] > 89 ||
			scores[1][2] > 89

		fmt.Printf("受験者%dさんは\n", i+1)
		if total {
			fmt.Println("総合得点で合格しています")
		}
		if balance {
			fmt.Println("全ての課題で合格しています")
		}
		if !total && !balance && talent {
			fmt.Println("一芸に秀でています")
		}

		if total && balance {
			fmt.Println("おめでとうございます")
		} else if total || talent {
			fmt.Println("来週、再挑戦できます")
		} else {
			fmt.Println("来年、また挑戦してください")
		}
		fmt.Println()
	}
}
```

上記のコードでは課題の試験の結果を以下のように評価している。

```
・「総得点」が180以上、かつ、すべての課題で60点以上獲得すれば総合的に合格
・総得点が足りなくても、すべての課題で60点以上獲得すれば1週間後に挑戦できる
・どちらの場合でもなくても、どれか一つの課題で90点以上獲得すれば1週間後に再挑戦できる
```

| 演算子 |            説明          |
| ----- | ----------------------- |
| && |論理積(かつ) |
| ｜｜ |  論理和(または) |
| ！  | 否定（でない）|

# switch文の便利な使い方

###### tags:`1日で基本が身につくGo言語`