Переменные, константы и базовые типы
Содержание курса
const, базовые типы int/float64/bool/string и их нулевые значения
const объявляет именованную константу — значение, которое фиксируется на этапе компиляции и не может измениться в процессе выполнения программы.
const Pi = 3.14
const MaxItems int = 100
Эти две формы принципиально различаются. MaxItems — типизированная константа: у неё зафиксирован тип int, и в любом контексте она ведёт себя именно как int. Pi — нетипизированная числовая константа: у неё нет конкретного типа при объявлении. Компилятор хранит её как константу вида «floating-point constant» с высокой точностью, а конкретный тип (float64, float32 или другой) она получит только тогда, когда используется в выражении, которое требует определённого типа. Если контекст не задан — применяется тип по умолчанию для данного вида константы (float64 для вещественных).
Попытка переприсвоить константу после объявления немедленно даёт ошибку компиляции: cannot assign to Pi. const допустим и внутри функции, и на уровне пакета.
Теперь о четырёх базовых типах, с которыми вы будете работать прямо сейчас:
int— целое число. Нулевое значение:0.float64— число с плавающей точкой двойной точности. Нулевое значение:0.bool— логический тип. Нулевое значение:false.string— строка. Нулевое значение: пустая строка"".
Каждый раз, когда вы пишете var без инициализатора, Go присваивает именно это значение. Посмотрите сами:
package main
import "fmt"
func main() {
var i int
var f float64
var b bool
var s string
fmt.Println(i, f, b, s)
}
Вывод:
0 0 false
Последний элемент — пустая строка, поэтому после false видно только пробел и конец строки. Нулевые значения — не случайный выбор: они семантически нейтральны для каждого типа и предсказуемы. В Go никогда не бывает ситуации, когда переменная «содержит мусор».
