Условный оператор if

Условный оператор if в Go выполняет блок кода, если указанное логическое условие возвращает true. В отличие от многих других языков, в Go условие не заключается в круглые скобки, но фигурные скобки вокруг тела оператора обязательны. Оператор if также поддерживает краткую запись с инициализацией переменной перед проверкой условия.

Синтаксис

goif condition {
  // код выполняется, если condition == true
}

Базовый синтаксис оператора if состоит из ключавого слова if, за которым следует логическое выражение, и блока кода в фигурных скобках. Условие всегда должно возвращать логическое значение (bool).

Пример

Проверим, является ли число положительным:

gopackage main

import "fmt"

func main() {
  x := 10
  if x > 0 {
    fmt.Println("x is positive")
  }
}

Результат выполнения кода:

go"x is positive"

Краткая инициализация в if

В Go оператор if позволяет объявить переменную, которая будет видна только внутри блока условия и его веток else. Это удобно, когда нужно выполнить вычисление и сразу проверить его результат.

Пример

Проверим четность числа с инициализацией переменной внутри if:

gopackage main

import "fmt"

func main() {
  if num := 42; num%2 == 0 {
    fmt.Println("num is even")
  }
}

Результат выполнения кода:

go"num is even"

Пример

Переменная, объявленная в if, недоступна за пределами оператора:

gopackage main

import "fmt"

func main() {
  if val := 100; val > 0 {
    fmt.Println(val, "is positive")
  }
  // fmt.Println(val) // ошибка: val не определена
}

Результат выполнения кода:

go"100 is positive"

Пример

Оператор if с инициализацией часто используется при работе с функциями, которые возвращают значение и ошибку:

gopackage main

import (
  "fmt"
  "strconv"
)

func main() {
  if num, err := strconv.Atoi("123"); err == nil {
    fmt.Println("Parsed number:", num)
  }
}

Результат выполнения кода:

go"Parsed number: 123"

Вложенные условия

Операторы if могут быть вложены друг в друга для проверки нескольких условий последовательно.

Пример

Проверим число на положительность и четность с помощью вложенных if:

gopackage main

import "fmt"

func main() {
  x := 8
  if x > 0 {
    if x%2 == 0 {
      fmt.Println("x is positive and even")
    }
  }
}

Результат выполнения кода:

go"x is positive and even"

Смотрите также

  • оператор else,
    который выполняет код при ложном условии
  • оператор switch,
    который проверяет множество значений
  • оператор fallthrough,
    который передает управление в следующую ветку switch
  • оператор for,
    который организует циклы в Go