1 Обзор условных операторов
Условные операторы - важные инструменты для управления логическим потоком программирования. В Golang условные операторы похожи на операторы в других языках программирования, но у них есть свои особенности. Они позволяют нам решать, какой код выполнять в зависимости от условий true или false, что значительно повышает гибкость и поддерживаемость кода.
2 Оператор if
2.1 Основное использование оператора if
Оператор if
является наиболее простым условным оператором в языке Go. Его синтаксис следующий:
if условие {
// Код для выполнения, когда условие true
}
Вот простой пример:
package main
import "fmt"
func main() {
x := 10
if x > 5 {
fmt.Println("x больше 5")
}
}
Этот код проверит, больше ли x
5, и если да, то выполнит операцию печати.
2.2 Условные выражения
Условные выражения состоят из операторов сравнения (например, ==
, !=
, <
, >
, <=
, >=
) и логических операторов (например, &&
(И), ||
(ИЛИ), !
(НЕ)).
Например, чтобы проверить, находится ли переменная в определенном диапазоне:
y := 20
if y >= 10 && y <= 30 {
fmt.Println("y находится между 10 и 30")
}
В приведенном выше условном выражении используется логический оператор &&
, чтобы гарантировать, что значение y
находится между 10 и 30.
2.3 Структура if...else и else if
Если условие if
не выполняется, мы можем использовать else
для выполнения альтернативного блока кода. Оператор else if
позволяет нам проверять несколько условий. Вот пример:
score := 88
if score >= 90 {
fmt.Println("Отлично")
} else if score >= 80 {
fmt.Println("Хорошо")
} else if score >= 70 {
fmt.Println("Средне")
} else {
fmt.Println("Ниже среднего")
}
Этот код будет печатать разные оценки в зависимости от значения score
.
3 Оператор switch
3.1 Основный синтаксис оператора switch
Оператор switch
- это более краткий условный оператор ветвления, особенно подходящий для ситуаций, когда необходимо оценить несколько значений. Основной синтаксис оператора switch
следующий:
switch выражение {
case значение1:
// Код для выполнения, когда соответствует значение1
case значение2:
// Код для выполнения, когда соответствует значение2
default:
// Код для выполнения по умолчанию
}
Если значение выражение
соответствует значению, следующему за case
, будет выполнен соответствующий блок кода.
3.2 Падение через оператор switch
В операторе switch
в Go каждая ветка по умолчанию не переходит к следующему варианту, если не используется ключевое слово fallthrough
.
switch num {
case 1:
fmt.Println("Один")
fallthrough
case 2:
fmt.Println("Два")
default:
fmt.Println("Ни Один ни Два")
}
В приведенном выше коде, если num
равно 1, даже если оно соответствует case 1
, из-за наличия ключевого слова fallthrough
, программа продолжит выполнение кода в case 2
и напечатает "Два".
3.3 Ветвление по типу и пользовательское ветвление
Оператор switch
также поддерживает ветвление на основе типов переменных, известное как ветвление по типу. Кроме того, мы можем создавать более сложные пользовательские условия ветвления.
Пример ветвления по типу:
var i interface{} = 1
switch i.(type) {
case int:
fmt.Println("i - целое число")
case float64:
fmt.Println("i - float64")
default:
fmt.Println("i - другой тип")
}
Можно написать пользовательские условия ветвления для выполнения более сложных условных суждений, когда это необходимо.
## 4 Практическое упражнение
В этом разделе мы углубим понимание и применение условных операторов в Golang через конкретные примеры. Через практические задачи программирования вы станете более опытными в использовании операторов `if` и `switch` для решения реальных проблем.
### Калькулятор оценок
Давайте напишем простой калькулятор оценок. Эта программа будет определять и выводить соответствующую оценку на основе балла, введенного пользователем. Критерии оценок следующие:
- A - за баллы 90 и выше
- B - за баллы от 80 до 89
- C - за баллы от 70 до 79
- D - за баллы от 60 до 69
- F - за баллы ниже 60
Мы можем использовать либо оператор `if`, либо оператор `switch` для реализации этой функциональности. Сначала давайте рассмотрим пример с использованием оператора `if`:
```go
package main
import (
"fmt"
)
func main() {
var score int
fmt.Print("Пожалуйста, введите балл: ")
fmt.Scan(&score)
if score >= 90 {
fmt.Println("Оценка: A")
} else if score >= 80 {
fmt.Println("Оценка: B")
} else if score >= 70 {
fmt.Println("Оценка: C")
} else if score >= 60 {
fmt.Println("Оценка: D")
} else {
fmt.Println("Оценка: F")
}
}
В этом коде мы сначала объявляем переменную score
для хранения введенного пользователем балла. Мы используем функцию fmt.Scan
для получения ввода пользователя. Затем мы используем несколько операторов if
и else if
для определения соответствующей оценки по баллу и используем функцию fmt.Println
для вывода оценки.
Далее давайте посмотрим пример с использованием оператора switch
:
package main
import (
"fmt"
)
func main() {
var score int
fmt.Print("Пожалуйста, введите балл: ")
fmt.Scan(&score)
switch {
case score >= 90:
fmt.Println("Оценка: A")
case score >= 80:
fmt.Println("Оценка: B")
case score >= 70:
fmt.Println("Оценка: C")
case score >= 60:
fmt.Println("Оценка: D")
default:
fmt.Println("Оценка: F")
}
}
В примере с использованием оператора switch
структура кода более лаконична и понятна. Нам не нужно использовать множество последовательных операторов if
и else if
; вместо этого мы непосредственно указываем условия в каждом case
после switch
. Балл, который не соответствует условию предыдущего case
, автоматически переходит к следующему case
, пока не соответствует соответствующей ветви условия или не достигнет default
ветви, выводящей оценку F
.
Теперь, когда вы узнали, как использовать операторы if
и switch
для условных суждений, попробуйте написать свою собственную программу и попрактикуйтесь, чтобы углубить свое понимание.
В следующем разделе мы продолжим представлять более практические задачи, чтобы помочь вам укрепить свое владение условными операторами в Golang.
Обратите внимание, что приведенный выше код предназначен только для образовательных целей. При использовании в практических приложениях следует учитывать такие факторы, как взаимодействие с пользователем и обработка ошибок, чтобы сделать его более надежным.