@@ -4,7 +4,7 @@ layout: "chapter"
4
4
5
5
---
6
6
7
- Ранее в этой книге мы имели дело с литеральными значениями (числами, строками, и
7
+ Ранее в этой книге мы имели дело с литеральными значениями (числами, строками и
8
8
т.д.), но программы с одними только литералами фактически бесполезны. Для того,
9
9
чтобы сделать по-настоящему полезные программы, нам нужно узнать о двух важных
10
10
вещах: переменных и инструкциях, управляющих ходом исполнения. В этой главе
@@ -42,12 +42,12 @@ layout: "chapter"
42
42
43
43
Переменные в Go похожи на переменные в алгебре, но есть несколько различий:
44
44
45
- Во первых, когда мы видим символ ` = ` , мы по привычки читаем его как «х равен
45
+ Во первых, когда мы видим символ ` = ` , мы по привычке читаем его как «х равен
46
46
строке Hello World». Нет ничего неверного в том, чтобы читать программу таким
47
- образом, но лучше читать это как: «х принимает значение строки Hello World» или
48
- «x присваивается строка Hello World». Это различие важно потому, что (как
49
- понятно по их названию) переменные могут менять свои значения во время
50
- выполнения программы . Попробуйте сделать следующее:
47
+ образом, но лучше читать это как «х принимает значение строки Hello World» или
48
+ «x присваивается строка Hello World». Это различие важно потому, что
49
+ переменные могут менять свои значения во время выполнения программы
50
+ (как понятно по их названию) . Попробуйте сделать следующее:
51
51
52
52
package main
53
53
@@ -61,7 +61,7 @@ layout: "chapter"
61
61
fmt.Println(x)
62
62
}
63
63
64
- На самом деле, вы можете сделать даже так:
64
+ На самом деле вы можете сделать даже так:
65
65
66
66
var x string
67
67
x = "first "
@@ -70,20 +70,20 @@ layout: "chapter"
70
70
fmt.Println(x)
71
71
72
72
Эта программа будет бессмысленной, если вы будете читать её как теорему из
73
- алгебры. Но она обретет смысл если вы будете внимательно читать программу как
74
- список команд. Когда вы видим ` x = x + "second" ` , то должны читать это так:
75
- «присвоить конкатенацию значения переменной x и литерала строки переменной x».
76
- Операции справа от ` = ` выполняются первыми и результат присваивается левой
73
+ алгебры. Но она обретет смысл, если вы будете внимательно читать программу как
74
+ список команд. Когда мы видим ` x = x + "second" ` , то должны читать это так:
75
+ «Присвоить конкатенацию значения переменной x и литерала строки переменной x».
76
+ Операции справа от ` = ` выполняются первыми, и результат присваивается левой
77
77
части.
78
78
79
79
Запись ` x = x + y ` настолько часто встречается в программировании, что в Go есть
80
80
специальный оператор присваивания ` += ` . Мы можем записать ` x = x + "second" `
81
- как ` x += "second" ` и результат будет тем же. (Прочие операторы могут быть
82
- использованы подобным образом)
81
+ как ` x += "second" ` , и результат будет тем же. (Прочие операторы могут быть
82
+ использованы подобным образом).
83
83
84
84
Другое отличие между Go и алгеброй в том, что используется другой символ для
85
- равенства: ` == ` . (Два знака равно, один за другим) ` == ` - это оператор, как и ` + `
86
- и он возвращает логический тип. Например:
85
+ равенства: ` == ` . (Два знака равно, один за другим) ` == ` - это оператор. Как и ` + ` ,
86
+ он возвращает логический тип. Например:
87
87
88
88
var x string = "hello"
89
89
var y string = "world"
@@ -95,17 +95,17 @@ layout: "chapter"
95
95
var y string = "hello"
96
96
fmt.Println(x == y)
97
97
98
- Напечатает ` true ` , потому что обе строки одинаковы.
98
+ напечатает ` true ` , потому что обе строки одинаковы.
99
99
100
100
Если мы хотим присвоить значение переменной при её создании, то можем
101
101
использовать сокращенную запись:
102
102
103
103
x := "Hello World"
104
104
105
- Обратите внимание на то что ` : ` стоит перед ` = ` и на отсутствие типа. Тип в
106
- данном случае указывать необязательно , так как компилятор Go способен определить
107
- тип по литералу, которым мы инициализируем переменную. ( Тут мы присваиваем
108
- строку, поэтому x будет иметь тип ` string ` ) Компилятор может определить тип и
105
+ Обратите внимание на то, что ` : ` стоит перед ` = ` и на отсутствие типа. Тип в
106
+ данном случае указывать не обязательно , так как компилятор Go способен определить
107
+ тип по литералу, которым мы инициализируем переменную. Тут мы присваиваем
108
+ строку, поэтому x будет иметь тип ` string ` . Компилятор может определить тип и
109
109
при использовании ` var ` :
110
110
111
111
var x = "Hello World"
@@ -128,7 +128,7 @@ layout: "chapter"
128
128
x := "Max"
129
129
fmt.Println("My dog's name is", x)
130
130
131
- В этом случае, ` x ` - это не самое лучшее имя переменной. Лучше было бы так:
131
+ В этом случае ` x ` не самое лучшее имя переменной. Лучше было бы так:
132
132
133
133
name := "Max"
134
134
fmt.Println("My dog's name is", name)
@@ -141,7 +141,7 @@ layout: "chapter"
141
141
В последнем случае мы использовали специальный способ написания имени
142
142
переменной, состоящей из нескольких слов, известный как lower CamelCase (или
143
143
camelBack). Первая буква первого слова записывается в нижнем регистре, первая
144
- буква последующих слов записывается в верхнем регистре - всё остальное в нижнем.
144
+ буква последующих слов записывается в верхнем регистре, всё остальное - в нижнем.
145
145
146
146
## Область видимости
147
147
@@ -199,16 +199,16 @@ camelBack). Первая буква первого слова записывае
199
199
200
200
Компилятор говорит вам, что переменная ` x ` внутри функции ` f ` не существует. Она
201
201
существует только внутри функции ` main ` . Места, где может использоваться
202
- переменная ` x ` называется областью видимости переменной. Согласно спецификации:
203
- «В Go область видимости ограничена блоками». В основном, это значит, что
202
+ переменная ` x ` , называются областью видимости переменной. Согласно спецификации,
203
+ «в Go область видимости ограничена блоками». В основном, это значит, что
204
204
переменные существуют только внутри текущих фигурных скобок ` { ` ` } ` (в блоке),
205
205
включая все вложенные скобки (блоки). Область видимости поначалу может запутать
206
206
вас, но когда вы увидите больше примеров, то всё станет ясно.
207
207
208
208
## Константы
209
209
210
210
Go также поддерживает константы. Константы — это переменные, чьи значения не
211
- могут быть изменены после инициализации. Они создаются таки же образом, как и
211
+ могут быть изменены после инициализации. Они создаются таким же образом, как и
212
212
переменные, только вместо ` var ` используется ключевое слово ` const ` :
213
213
214
214
package main
@@ -229,12 +229,12 @@ Go также поддерживает константы. Константы
229
229
230
230
.\main.go:7: cannot assign to x
231
231
232
- Константы — хороший способ использовать определенные значения в программе, без
232
+ Константы — хороший способ использовать определенные значения в программе без
233
233
необходимости писать их каждый раз. Например, константа ` Pi ` из пакета ` math ` .
234
234
235
235
## Определение нескольких переменных
236
236
237
- В Go существует еще одно сокращение, на случай, если необходимо определить несколько переменных:
237
+ В Go существует еще одно сокращение на случай, если необходимо определить несколько переменных:
238
238
239
239
var (
240
240
a = 5
@@ -263,8 +263,8 @@ Go также поддерживает константы. Константы
263
263
264
264
265
265
Тут мы используем другую функцию из пакета ` fmt ` , чтобы считать пользовательский
266
- ввод (` Scanf ` ). ` &input ` будет объяснен в следующий главах, и все что нам нужно
267
- знать сейчас — что ` Scanf ` заполняет переменную ` input ` числом, введенным нами.
266
+ ввод (` Scanf ` ). ` &input ` будет объяснен в следующих главах, а все, что нам нужно
267
+ знать сейчас, это то, что ` Scanf ` заполняет переменную ` input ` числом, введенным нами.
268
268
269
269
## Задачи
270
270
@@ -280,4 +280,4 @@ Go также поддерживает константы. Константы
280
280
* Используя пример программы выше, напишите программу, переводящую температуру
281
281
из градусов Фаренгейта в градусы Цельсия. (` C = (F - 32) * 5/9 ` )
282
282
283
- * Напишите другую программу, для перевода футов в метры. (1 фут = 0.3048 метр)
283
+ * Напишите другую программу для перевода футов в метры. (1 фут = 0.3048 метр)
0 commit comments