В Go променливите са изрично декларирани и използвани от компилатора за напр. проверете правилността на типа на извикванията на функции.

Променливите могат да бъдат инициализирани точно като константите, но инициализаторът може да бъде общ израз, изчислен по време на изпълнение.

Дълга форма:

var i int

Тук инструкцията var декларира списък от променливи; както в списъците с аргументи на функцията, типът е последен.

Изявление var може да бъде на ниво пакет или функция. Виждаме и двете в горния пример.

Кратка форма:

i := 10

Тук декларираме променлива с име "i" и съхраняваме 10 като нейна стойност. Отидете тук, познайте типа на променливата автоматично чрез извеждане на типа

Променливи с инициализатори

променлива i, j int = 1, 2

Декларацията на var може да включва инициализатори, по един на променлива. Ако има инициализатор, типът може да бъде пропуснат; променливата ще приеме типа на инициализатора.

Множество декларации

var (
    home string
    userID,age = 1,20
    isPresent boolean
)

Това декларира множество променливи, които имат различни типове и стойности в едно и също изявление.

Тук в горния пример стойността на втория ред за userID е 1, а възрастта е 20.

Основни видове

string
bool
int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr
byte // alias for uint8
rune // alias for int32
     // represents a Unicode code point
float32 float64
complex64 complex128

Примерът по-долу показва променливи от няколко типа, а също така, че декларациите на променливи могат да бъдат „факторизирани“ в блокове, както при операторите за импортиране.

package main

import (
 "fmt"
 "math/cmplx"
)

var (
 ToBe   bool       = false
 MaxInt uint64     = 1<<64 - 1
 z      complex128 = cmplx.Sqrt(-5 + 12i)
)

func main() {
 fmt.Printf("Type: %T Value: %v\n", ToBe, ToBe)
 fmt.Printf("Type: %T Value: %v\n", MaxInt, MaxInt)
 fmt.Printf("Type: %T Value: %v\n", z, z)
}

Типовете int, uint и uintptr обикновено са с ширина 32 бита на 32-битови системи и 64 бита на 64-битови системи. Когато имате нужда от цяло число, трябва да използвате int, освен ако нямате конкретна причина да използвате тип цяло число с размер или без знак.

Нулеви стойности

На променливи, декларирани без изрична начална стойност, се дава тяхната нулева стойност.

Нулевата стойност е:

  • 0 за числови типове,
  • false за булевия тип и
  • "" (празният низ) за низове.

Коя форма трябва да се използва?

Обикновено се използва дълга декларация, когато човек не може да знае какви данни да съхранява предварително, в противен случай обикновено е добре кратката декларация. Използването на множество декларации, когато трябва да дефинирате няколко променливи заедно, помага за четливостта на кода.

Кратките декларации не могат да се използват извън функции, включително функцията main или компилаторът извежда следната грешка:

синтактична грешка: израз без декларация извън тялото на функцията“. Не е добре.

Променлива, достъпна за други пакети

Този метод за предоставяне на променливи на други пакети в кода се нарича експортиране. За да бъде една променлива обхват на пакета, можем да използваме само дълга декларация или множество декларации.

Да направите променлива достъпна е толкова лесно, колкото да напишете първата й буква с главна буква.

Пример:

package main

func main() {
 var age int //unexported
 var Name string //exported
}