В этой главе рассмотрены базовые типы Go
Go — это язык со статической типизацией без неявного приведения типов. Это означает, что:
- После объявления переменной её тип нельзя изменить.
- Переменная неподходящего типа перед использованием должна быть явно преобразована к нужному типу.
Такое поведение может показаться излишне строгим, но оно спасает от многих ошибок на стадии написания кода.
В Go базовый тип не может иметь null
значение. Объявленные переменные, до того
как им присвоено значение, имеют так называемое нулевое значение:
0
- для числовых типов.false
- для логического типа.""
(пустая строка) для строк.
В Go, если переменная объявлена, то она должна быть использована!
Если вы не знаете какой тип использовать, то используйте int
, а вообще существуют:
uint8
,uint16
,uint32
,uint64
,int8
,int16
,int32
иint64
. 8, 16, 32 и 64 обозначает, сколько бит использует каждый тип. Префиксu
обозначает беззнаковость.uint
,int
,uintptr
. Машинно-зависимые типы.int
,uint
,uintptr
занимают минимум 32 байта.byte
(то же самое, чтоuint8
) иrune
(то же самое, чтоint32
)
Если вы не знаете какой тип использовать, то используйте float64
, а вообще существуют:
float32
иfloat64
- вещественные числа с одинарной и двойной точностьюcomplex64
иcomplex128
- комплексные числа с одинарной и двойной точностью
Строки в Go состоят из байтов, обычно по одному на каждый символ (символы из других языков, таких как русский, представляются несколькими байтами).
Для создания строкового литерала можно использовать:
- Двойные кавычки "Hello world". В этому случае строка не может быть перенесена на следующую сроку в коде и поддерживает управляющие последовательности, такие как \n \t
var s string
s = "Hello\n world\n"
- Апострофы
`Hello world`
. В таком случае управляющие последовательности не поддерживаются, но строка может быть перенесена на следующую строку кода.
s := `
Hi, it's a multiline
string
`
Переменная объявляется при помощи ключевого слова var
Краткая запись x := 1
обозначает объявление переменной и присвоение ей начального значения.
Логический тип bool - без комментариев.