Короткое объявление переменной :=

Короткое объявление переменной := в Go используется для объявления и инициализации переменной в одной строке. В левой части оператора указывается имя переменной, а в правой — значение, которое автоматически определяет тип переменной. Это сокращенная форма записи, которая заменяет объявление через var с явным указанием типа. Оператор := доступен только внутри функций и не может использоваться на уровне пакета.

Синтаксис

goпеременная := значение

Пример

Давайте объявим переменную name со значением "John" и переменную age со значением 30:

gopackage main

import "fmt"

func main() {
  name := "John"
  age := 30

  fmt.Println(name)
  fmt.Println(age)
}

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

go"John"
30

Пример

Короткое объявление позволяет инициализировать несколько переменных одновременно. Давайте объявим переменные firstName и lastName в одной строке:

gopackage main

import "fmt"

func main() {
  firstName, lastName := "John", "Doe"

  fmt.Println(firstName)
  fmt.Println(lastName)
}

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

go"John"
"Doe"

Пример

Короткое объявление также работает с функциями, возвращающими несколько значений. Давайте объявим переменные sum и diff на основе результатов работы функции:

gopackage main

import "fmt"

func calculate(a, b int) (int, int) {
  return a + b, a - b
}

func main() {
  sum, diff := calculate(10, 3)

  fmt.Println(sum)
  fmt.Println(diff)
}

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

go13
7

Пример

Важно помнить, что оператор := нельзя использовать, если переменная уже объявлена в той же области видимости. В таком случае нужно использовать обычное присваивание =. Давайте посмотрим на пример:

gopackage main

import "fmt"

func main() {
  x := 10
  fmt.Println(x)

  x = 20
  fmt.Println(x)

  // y := 30 // так можно
  // x := 40 // так нельзя - переменная x уже объявлена
}

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

go10
20

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

  • оператор var,
    который используется для явного объявления переменных
  • оператор const,
    который объявляет неизменяемые константы
  • конструкцию if,
    которая позволяет выполнять условные переходы
  • конструкцию for,
    которая организует циклы в Go