Шаг 11.
Язык программирования Go.
Объявление переменных в Go

    На этом шаге продолжим рассматривать основы языка Go и познакомимся с объявлением переменных.

    Объявление var создает переменную определенного типа, назначает ей имя и присваивает начальное значение. Каждое объявление имеет общий вид

var имя тип = выражение //тип или = выражение может отсутствовать

    Если опущен тип, то он определяется из инициализирующего выражения. Если же опущено выражение, то начальным значением является нулевое значение для данного типа:

    Рассмотрим примеры объявления переменных:

var i int // переменная; значение 0; тип: int 
var debug = false // переменная; определяемый компилятором тип: bool 

    Несколько переменных можно объявить и (необязательно) инициализировать в одном объявлении var, используя соответствующий список выражений. Пропущенный тип позволяет объявлять несколько переменных разных типов, например:

var i, j, k int // int, int, int
var s, b, f = "строка”, true, 2.3 // string, bool, float64 

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

    Множество переменных может также быть инициализировано с помощью вызова функции, возвращающей несколько значений, например:

var f, err = os.Open(name) // os.Open возвращает имя файла и ошибку 

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

имя := выражение,
и тип переменной определяется как тип выражения, например

first := -19 // переменная; определяемый компилятором тип: int
last := int64(9876543210) // переменная; тип: int64
result := true // переменная; определяемый компилятором тип: bool
step := 1.5 // переменная; определяемый компилятором тип: float64
str := "строка" // переменная; определяемый компилятором тип: string

    В одном кратком объявлении можно объявить и инициализировать несколько переменных, например

i, j := 0, 1 // i = 0, j = 1

    Краткие объявления переменных могут использоваться для вызовов функций наподобие os.Open, которые возвращают два или больше значений, например:

f, err := os.Open(name)
if err != nil {
    return err
}
// использование f
f.Close()

    Если некоторые из переменных уже были объявлены в том же лексическом блоке, то для этих переменных краткие объявления действуют как присваивания, например:

in, err := os.Open(infile) //объявляем in и err
out, err := os.Create(outfile) //объявляем out и присваиваем значение err 

    Краткое объявление переменной должно объявлять по крайней мере одну новую переменную, например, приведенный ниже код не компилируется:

in, err := os.Open(infile)
in, err:= os.Create(outfile) // Ошибка: нет новой переменной
                             //(для устранения ошибки следует
			     //использовать присваивание "=") 

    Время жизни переменной - это интервал времени выполнения программы, в течение которого она существует. Переменные уровня пакета существуют все время работы программы. Локальные переменные имеют динамическое время жизни: новый экземпляр создается всякий раз, когда выполняется оператор объявления, и переменная живет до тех пор, пока она становится недоступной, после чего выделенная для нее память может быть использована повторно. Параметры и результаты функций являются локальными переменными - они создаются всякий раз, когда вызывается их функция.

    На следующем шаге рассмотрим логические значения и выражения в Go.


Предыдущий шаг Содержание Следующий шаг