Конструкция else if в Go
Пусть переменная num может принимать
значения 1, 2 или 3.
Для каждого значения можно написать отдельный
if без else:
num := 1 // может быть 1, 2 или 3
if num == 1 {
fmt.Println("variant 1") // сработает это
}
if num == 2 {
fmt.Println("variant 2")
}
if num == 3 {
fmt.Println("variant 3")
}
Конструкция else if позволяет задавать
условия в блоке else. Отдельного слова
elseif в Go нет. Давайте посмотрим
на примере:
num := 1
if num == 1 {
fmt.Println("variant 1") // сработает это
} else if num == 2 {
fmt.Println("variant 2")
} else if num == 3 {
fmt.Println("variant 3")
}
Преимущество в том, что можно поймать ситуацию, когда значение не подходит ни под одно условие:
num := 1
if num == 1 {
fmt.Println("variant 1") // сработает это
} else if num == 2 {
fmt.Println("variant 2")
} else if num == 3 {
fmt.Println("variant 3")
} else {
fmt.Println("variant not supported")
}
Пусть в mins лежит число минут от
0 до 59. Определим четверть часа:
mins := 10
if mins >= 0 && mins <= 14 {
fmt.Println("1 quarter") // сработает это
}
if mins >= 15 && mins <= 29 {
fmt.Println("2 quarter")
}
if mins >= 30 && mins <= 44 {
fmt.Println("3 quarter")
}
if mins >= 45 && mins <= 59 {
fmt.Println("4 quarter")
}
Несколько веток проверяют сверху вниз, пока одна не окажется истинной.
После первой проверки пишут else if с новым
условием, затем снова else if или финальный
else. Отдельного слова elif в Go нет.
Как только одна проверка дала «да», остальные ниже не смотрят. Порядок важен: более частый или более строгий случай ставят выше.
Разделим оценку по баллам:
score := 75
if score >= 90 {
fmt.Println("A")
} else if score >= 70 {
fmt.Println("B")
} else {
fmt.Println("C")
}
При другом числе сработает другая строка цепочки:
score := 95
if score >= 90 {
fmt.Println("A")
} else if score >= 70 {
fmt.Println("B")
} else {
fmt.Println("C")
}
Дано число:
n := 0
При 0 выведите "zero", при 1
выведите "one", иначе "many".
Дано число:
age := 15
До 13 выведите "child", до 18
выведите "teen", иначе "adult".
Дана переменная:
letter := 'a'
Сравните letter с 'a', затем с 'b'
в цепочке и выведите "first", "second"
или "other".
В переменной day лежит какое-то число
из интервала от 1 до 31.
Определите, в какую декаду месяца попадает
это число: в первую, вторую или третью.
Модифицируйте предыдущую задачу так, чтобы,
если в переменной day будет не число
от 1 до 31, выдавалось сообщение
об ошибке.
Решите задачу про минуты еще раз и определите, в какую треть часа попадает указанное количество минут.