Вы находитесь на странице: 1из 9

Модуль 2. Базовые типы.

Целочисленные типы. Данные и


вычисления
1. Переменные и типы

Термины и определения
Переменная — это именованная область памяти для хранения данных, которые могут
изменяться в процессе исполнения программы. С помощью переменных можно
выполнять арифметические операции и выводить результат в консоль.

Константа — область памяти для хранения данных, которые изменяться не могут.


Константы удобно использовать вместо конкретных значений при вычислениях. Число
пи, например, представляется как math.Pi.

Тип — характеристика, которая определяет, какое значение будет присвоено


переменной или константе: число, строка, указатель (адрес ячейки памяти) и так
далее. В зависимости от типа переменная может занимать область памяти от 1 байта.

Байт — единица хранения и обработки цифровой информации; совокупность битов,


обрабатываемая компьютером одномоментно. В современных компьютерах байт
равен 8 битам и может хранить число от 0 до 255.

Бит — минимальная единица измерения информации. Один бит в двоичной системе


счисления может принимать два значения: 1 или 0.

Типы данных

Целые числа
int8 — 8-разрядные целые числа со знаком, имеющие значение от −128 до 127.
int16 — 16-разрядные целые числа со знаком, имеющие значение от −32 768 до 32
767.
int32 — 32-разрядные целые числа со знаком, имеющие значение от −2 147 483 648 до
2 147 483 647.
int64 — 64-разрядные целые числа со знаком, имеющие значение от −9 223 372 036
854 775 808 до 9 223 372 036 854 775 807.
uint8 — 8-разрядные целые числа без знака, имеющие значение от 0 до 255.
uint16 — 16-разрядные целые числа без знака, имеющие значение от 0 до 65 535.
uint32 — 32-разрядные целые числа без знака, имеющие значение от 0 до 4 294 967
295.
uint64 — 64-разрядные целые числа без знака, имеющие значение от 0 до 18 446 744
073 709 551 615.
byte — синоним типа uint8; целые числа без знака, имеющие значение от 0 до 255.
rune — синоним типа int32; используется для хранения рун (символов).
int зависит от платформы, может соответствовать int32 или int64.
uint также зависит от платформы, может соответствовать uint32 или uint64.

Числовые типы с плавающей запятой (точкой)


Типы с плавающей запятой используются для хранения чисел с дробной частью.

float32 — представляет число в диапазоне от 1.2 E −38 до 3.4 E +38; размер 32 бита
или 4 байта.
float64 — представляет число в диапазоне от 1.2 E −38 до 3.4 E +38; размер 64 бита
или 8 байт.

Комплексные числа
complex64 — тип, который представляет реальные и мнимые данные float32.
complex128 — тип, который представляет реальные и мнимые данные float64.

Строки
string — последовательность символов, каждый из которых кодируется одним или
несколькими байтами.

Логические значения
bool — логическое значение. Бывает двух видов: true и false.
2. Инициализация и присваивание значений
переменным

Объявление переменных
Для объявления переменной в Go используется ключевое слово var. За ним следует
имя переменной, затем её тип. Например:

var fullName string


var height int

Если нужно объявить сразу несколько переменных (блок), можно воспользоваться


скобками.

var (
firstName string
lastName string
weight int
)

Переменным, объявленным без начального значения, присваиваются значения по


умолчанию:
● 0 — для всех целочисленных типов;
● 0.0 — для чисел с плавающей запятой;
● false — для логических значений;
● "" — для строк;
● nil — для интерфейсов, срезов, каналов, карт, указателей и функций.

Присваивание значений
Допускается присваивание значения переменной в момент объявления. Например:

var fullName string = "Имя Фамилия"


var height int = 184

Аналогично для блочного объявления:

var (
firstName string = "Имя"
lastName string = "Фамилия"
weight int = 82
)
Можно присвоить переменной значение, соответствующее её типу, после объявления.

var fullName string


fullName = "Имя Фамилия"

var height int


height = 184

В случае блочного объявления:

var (
firstName string
lastName string
weight int
)

firstName = "Имя"
lastName = "Фамилия"
weight = 82

Ещё один способ объявить переменную и присвоить ей значение — использовать


двоеточие перед знаком равенства. Тип переменной компилятор выведет
самостоятельно:

fullName := "Имя Фамилия"


height := 184

Константы
Константы похожи на переменные, но имеют важное отличие: значения им
присваиваются при объявлении, и изменить их уже нельзя. Для объявления констант
используется ключевое слово const. Например:

const fullName = "Имя Фамилия"


const height = 184

Или:

const (
firstName string = "Иван"
lastName string = "Иванов"
weight int = 82
)

3. Вывод значений переменных

Функция fmt.Print
Самая простая функция, выводит в консоль последовательность значений,
перечисленных через запятую.

var (
name string = "Alexander"
age int = 29
)

fmt.Print("Hello, I'm ", name, "\n")


fmt.Print("I'm ", age, " years old.\n")

Результат вывода:

Hello, I'm Alexander


I'm 29 years old.

Обратите внимание: для того чтобы выводимые значения разделялись пробелами,


нужно добавить их в строки. Для переноса строки используется специальный символ
— "\n".

Функция Println
PrintIn имеет немного больше возможностей, чем fmt.Print: самостоятельно добавляет
пробелы между выводимыми значениями и перенос строки в конце.

var (
name string = "Alexander"
age int = 29
)

fmt.Println("Hello, I'm", name)


fmt.Println("I'm", age, "years old.")

Результат вывода:
Hello, I'm Alexander
I'm 29 years old.

Функция fmt.Printf
Самая продвинутая функция вывода. Сначала указывается шаблон для вывода, затем
перечисляются значения.

var (
name string = "Alexander"
age int = 29
)

fmt.Printf("Hello, I'm %s\n", name)


fmt.Printf("I'm %d years old.\n", age)

Результат вывода:
Hello, I'm Alexander
I'm 29 years old.

Обратите внимание: в строке использовались специальные символы, чтобы отметить


места, куда нужно добавить перечисленные значения. Символ "%s" — для вставки
строки, "%d" — для вставки числа. Подробно со всеми спецификаторами можно
ознакомиться в материале о пакетах Go.

4. Арифметические операции

Операции инкремента и декремента


Операторы ++ и -- увеличивают или уменьшают значение переменной на единицу:
var a = 0
a++
fmt.Println(a) // Результат: 1

Или:

var a = 1
a--
fmt.Println(a) // Результат: 0
Сложение и вычитание
Операторы сложения и вычитания работают так же, как и в математике:
var (
a = 1
b = 2
)
c := a + b
fmt.Println(c) // Результат: 3

Или:

var (
a = 2
b = 1
)
c := a - b
fmt.Println(c) // Результат: 1

Сокращённый синтаксис позволяет к значению одной переменной сразу прибавить


значение другой (или вычесть из неё это значение):
var (
a = 1
b = 2
)
a += b
fmt.Println(a) // Результат: 3

Или:

var (
a = 2
b = 1
)
a -= b
fmt.Println(a) // Результат: 1

Умножение и деление
Аналогичным образом работает умножение и деление:
var (
a = 6
b = 2
)
c := a * b
fmt.Println(c) // Результат: 12

Или:
var (
a = 6
b = 2
)
c := a / b
fmt.Println(c) // Результат: 3

Здесь также доступен сокращённый синтаксис:


var (
a = 6
b = 2
)
a *= b
fmt.Println(a) // Результат: 12

Или:
var (
a = 6
b = 2
)
a /= b
fmt.Println(a) // Результат: 3

Деление по модулю
Оператор % возвращает остаток от деления. Эта функция полезна для поиска кратных
чисел.
var (
a = 15
b = 6
)
c := a % b
fmt.Println(c) // Результат: 3

Разберём пример:
15 - 6*2 = 15 - 12 = 3

● Ближайшее целое кратно 6, но меньше 15 — это 12.


● Если вычесть из 15 число 12, получим остаток от деления на 6 равным 3.

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

Приоритет Операторы Описание

5 *, /, %, <<, >>, &, &^ Умножение, деление, остаток от деления,


двоичные сдвиги, двоичное И, двоичное И
НЕ

4 +, −, ^, | Сложение, вычитание, двоичное


исключающее ИЛИ, двоичное ИЛИ

3 <, <=, >, >=, ==, != Операторы сравнения

2 && логическое И

1 || логическое ИЛИ

Операторы с одинаковым приоритетом выполняются слева направо. Например:

a / b * c

Сначала выполнится деление, затем умножение.

Вам также может понравиться