Переменные в Go
Переменная — это именованное место в программе, где хранится значение, чтобы вы могли использовать его позже.
Типы переменных в Go
Тип переменной определяет, какие данные она может хранить. В Go есть несколько типов, в том числе такие:
int- целые числа, например 123 или -123float32- числа с плавающей точкой, с десятичной частью, например 19.99 или -19.99string- текст, например «Hello World», записанный в двойных кавычкахbool- одно из двух состояний, true или false
Объявление (создание) переменных
В Go есть два способа объявить переменную. Синтаксис каждого из них показан ниже.
1. Ключевое слово var:
Напишите var, затем имя переменной и её тип.
Примечание: Можно опустить type или value, но никогда не оба сразу.
2. Знак :=:
Напишите имя переменной, затем :=, затем значение.
Примечание: В этой форме тип выводится: компилятор определяет его по указанному вами значению.
Примечание: Поскольку компилятору нужно это значение, := нельзя использовать для объявления переменной без присваивания значения.
Синтаксис с var
var variablename type = value
Сокращённый синтаксис
variablename := value
Объявление переменной с начальным значением
Когда вы уже знаете, что должна хранить переменная, вы можете выполнить объявление и присваивание в одной строке, как показано в примере ниже.
Примечание: Ни у student2, ни у x тип в коде не указан, поэтому их типы выводятся из их значений.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
var student1 string = "John" //тип — string
var student2 = "Jane" //тип выводится автоматически
x := 2 //тип выводится автоматически
fmt.Println(student1)
fmt.Println(student2)
fmt.Println(x)
}
Объявление переменной без начального значения
Go никогда не оставляет переменную неинициализированной. Если вы объявите переменную, не задав ей значение, она автоматически получит значение по умолчанию для своего типа:
Пример
Программа ниже объявляет три переменные, a, b и c, и не задаёт ни одной из них значение. Запустив её, вы увидите, что каждая уже содержит значение по умолчанию для своего типа: a равно "", b равно 0, а c равно false.
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
var a string
var b int
var c bool
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}
Присваивание значения после объявления
Необязательно задавать переменной значение сразу. Можно сначала объявить её, а значение присвоить позже: это полезно, когда вы ещё не знаете значение.
Примечание: Это работает только с var. При использовании «:=» значение всегда должно быть частью объявления.
Пример
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
func main() {
var student1 string
student1 = "John"
fmt.Println(student1)
}
Разница между var и :=
var и := различаются в нескольких небольших деталях:
var можно использовать и внутри, и вне функций, а объявить переменную и присвоить ей значение можно отдельными шагами.
:= работает только внутри функций, а объявление и присваивание нельзя разделить: они должны выполняться в одной строке.
Пример
Здесь var объявляет переменные вне какой-либо функции, и это работает без проблем:
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
var a int
var b int = 2
var c = 3
func main() {
a = 1
fmt.Println(a)
fmt.Println(b)
fmt.Println(c)
}
Пример
Эта программа пытается использовать := вне функции, поэтому вместо запуска она завершается ошибкой.
Вывод: Программа на Go и захваченный вывод
package main
import ("fmt")
a := 1
func main() {
fmt.Println(a)
}