В 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 }