Оператор объявления короткой переменной (: =) в Go
#GO
Оператор объявления короткой переменной (: =) в Golang используется для создания переменных, имеющих собственное имя и начальное значение. Основная цель использования этого оператора для объявления и инициализации локальных переменных внутри функций и для ограничения области видимости переменных. Тип переменной определяется типом выражения. Ключевое слово var также используется для создания переменных определенного типа. Таким образом, вы можете сказать, что есть два способа создания переменных в Golang следующим образом:
- Использование ключевого слова var
- Использование оператора объявления короткой переменной (: =)
В этой статье мы обсудим только оператор объявления коротких переменных. Чтобы узнать о ключевом слове var, вы можете обратиться к ключевому слову var в Go . Вы также можете прочитать разницу между ключевым словом var и оператором короткого объявления переменных, чтобы получить правильное представление об использовании обоих.
Синтаксис использования оператора короткого объявления переменных:
variable_name := expression or value
Здесь вы должны инициализировать переменную сразу после объявления. Но используя ключевое слово var, вы можете избежать инициализации во время объявления. Нет необходимости упоминать тип переменной . Выражение или значение в правой части используются для оценки типа переменной.
Пример: здесь мы объявляем переменные с помощью оператора короткого объявления и не указываем тип переменной. Тип переменной определяется типом выражения в правой части оператора :=
.
// Перейти к программе, чтобы проиллюстрировать использование
// of: = (короткое объявление
// оператор)
package main
import "fmt"
func main() {
// объявляем и инициализируем переменную
a := 30
// берём строковую переменную
Language: = "Go Programming"
fmt.Println("The Value of a is: ", a)
fmt.Println("The Value of Language is: ", Language)
}
Выход:
The Value of a is: 30 The Value of Language is: Go Programming
Объявление нескольких переменных с помощью оператора короткого объявления (: =)
Оператор короткого объявления может также использоваться для объявления нескольких переменных одного и того же типа или разных типов в одном объявлении. Тип этих переменных оценивается выражением в правой части оператора : = .
Пример:
// Перейти к программе, чтобы проиллюстрировать, как использовать: = short
// оператор объявления для объявления нескольких
// переменные в одном объявлении
package main
import "fmt"
func main() {
// несколько переменных одного типа (int)
geek1, geek2, geek3 := 117, 7834, 5685
// несколько переменных разных типов
geek4, geek5, geek6 := "GFG", 859.24, 1234
// Показать значение и
// тип переменных
fmt.Printf("The value of geek1 is : %d\n", geek1)
fmt.Printf("The type of geek1 is : %T\n", geek1)
fmt.Printf("\nThe value of geek2 is : %d\n", geek2)
fmt.Printf("The type of geek2 is : %T\n", geek2)
fmt.Printf("\nThe value of geek3 is : %d\n", geek3)
fmt.Printf("The type of geek3 is : %T\n", geek3)
fmt.Printf("\nThe value of geek4 is : %s\n", geek4)
fmt.Printf("The type of geek4 is : %T\n", geek4)
fmt.Printf("\nThe value of geek5 is : %f\n", geek5)
fmt.Printf("The type of geek5 is : %T\n", geek5)
fmt.Printf("\nThe value of geek6 is : %d\n", geek6)
fmt.Printf("The type of geek6 is : %T\n", geek6)
}
Выход:
The value of geek1 is : 117 The type of geek1 is : int The value of geek2 is : 7834 The type of geek2 is : int The value of geek3 is : 5685 The type of geek3 is : int The value of geek4 is : GFG The type of geek4 is : string The value of geek5 is : 859.240000 The type of geek5 is : float64 The value of geek6 is : 1234 The type of geek6 is : int
Важные моменты:
- Оператор короткого объявления можно использовать, когда хотя бы одна переменная в левой части оператора: = была объявлена заново. Оператор короткого объявления переменных ведет себя как присваивание тем переменным, которые уже объявлены в том же лексическом блоке. Чтобы получить лучшее представление об этой концепции, давайте рассмотрим пример.Пример 1: Программа ниже выдаст ошибку, поскольку в левой части оператора: = нет новых переменных.
// Перейти к программе, чтобы проиллюстрировать концепцию
// краткого объявления переменной
package main
import "fmt"
func main() {
// берём две переменные
p, q := 100, 200
fmt.Println("Value of p ", p, "Value of q ", q)
// это даст ошибку как
// нет новой переменной
// в левой части: =
p, q := 500, 600
fmt.Println("Value of p ", p, "Value of q ", q)
}
- Ошибка:
- Пример 2: В приведенной ниже программе вы можете видеть, что строка кода geek3, geek2: = 456, 200 будет работать без ошибок, поскольку по крайней мере есть новая переменная, то есть geek3, в левой части оператора: = ,
// Перейти в программу, чтобы показать, как использовать
// оператор объявления короткой переменной
package main
import "fmt"
func main() {
// Здесь действует краткое объявление переменной
// как присваивание переменной geek1
// потому что одна и та же переменная присутствует в том же блоке
// поэтому значение geek2 изменено с 100 на 200
geek1, geek2 := 78, 100
// здесь: = используется как назначение для geek2
// как уже заявлено. Также эта линия
// будет работать нормально, так как geek3 только что создан
// переменная
geek3, geek2 := 456, 200
// Если вы попытаетесь запустить закомментированные строки,
// тогда компилятор выдаст ошибку, потому что
// эти переменные уже определены
// geek1, geek2: = 745, 956
// geek3: = 150
// Отображаем значения переменных
fmt.Printf("The value of geek1 and geek2 is : %d %d\n", geek1, geek2)
fmt.Printf("The value of geek3 and geek2 is : %d %d\n", geek3, geek2)
}
- Выход:
The value of geek1 and geek2 is : 78 200 The value of geek3 and geek2 is : 456 200
- Go — это строго типизированный язык, так как вы не можете присвоить значение другого типа объявленной переменной.Пример:
// Перейти в программу, чтобы показать, как использовать
// оператор объявления короткой переменной
package main
import "fmt"
func main() {
// берём переменную типа int
z := 50
fmt.Printf("Value of z is %d", z)
// переназначение значения строкового типа
// это даст ошибку
z := "Golang"
}
- Ошибка:
- В коротком объявлении переменной разрешено инициализировать набор переменных вызывающей функцией, которая возвращает несколько значений. Или вы можете сказать, что переменным также могут быть назначены значения, которые оцениваются во время выполнения.Пример:
// Here, math.Max function return // the maximum number in i variable i := math.Max(x, y)
Локальные переменные или глобальные переменные?
С помощью оператора короткого объявления переменной (: =) вы можете объявить только локальную переменную, которая имеет только область действия уровня блока. Как правило, локальные переменные объявляются внутри функционального блока. Если вы попытаетесь объявить глобальные переменные с помощью оператора короткого объявления, вы получите ошибку.
Пример 1:
// Перейти в программу, чтобы показать использование оператора: =
// объявляем локальные переменные
package main
import "fmt"
// используем ключевое слово var для объявления
// и инициализируем переменную
// это пакет или вы можете сказать
// область глобального уровня
var geek1 = 900
// используя краткое объявление переменной
// это даст ошибку
geek2 := 200
func main() {
// доступ к geek1 внутри функции
fmt.Println(geek1)
// доступ к geek2 внутри функции
fmt.Println(geek2)
}
Ошибка:
Пример 2:
// Перейти в программу, чтобы показать использование оператора: =
// объявляем локальные переменные
package main
import "fmt"
// используем ключевое слово var для объявления
// и инициализируем переменную
// это пакет или вы можете сказать
// область глобального уровня
var geek1 = 900
func main() {
// используя краткое объявление переменной
// внутри основной функции
// имеет локальную область видимости, т.е. не может
// доступ вне основной функции
geek2 := 200
// доступ к geek1 внутри функции
fmt.Println(geek1)
// доступ к geek2 внутри функции
fmt.Println(geek2)
}
Выход:
900 200