forked from RedHatOfficial/GoCourse
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlesson1_ru.slide
More file actions
183 lines (134 loc) · 6.22 KB
/
lesson1_ru.slide
File metadata and controls
183 lines (134 loc) · 6.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
Урок 1. Введение, синтаксис, форматирование, пакеты, типы
Lesson 1
27 Jul 2025
Tags: golang, go
Перевод команды GoCourse
Stanislav Kozina <skozina@redhat.com>
Jakub Čajka <jcajka@redhat.com>
Red Hat, Inc.
https://github.com/RedHatOfficial/GoCourse
* Источники
- [[https://github.com/RedHatOfficial/GoCourse]]
.image ./common/qr_address.png
* Gophers
#The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)
#Source https://golang.org/doc/gopher/fiveyears.jpg
#The design and this image is licensed under the Creative Commons 3.0 Attributions license.
.image ./common/fiveyears.jpg _ 900
* Введение
Go — это язык программирования, созданный в Google в 2009 году. Его придумали Роб Пайк, Кен Томпсон и Роберт Гриземер. Go — это простой, быстрый и современный язык, который отлично подходит для новичков.
* Для чего нужен Go?
- Создание сайтов и серверов
- Облачные технологии (например, Docker, Kubernetes)
- Быстрые и надёжные программы
* Ресурсы
- Тур по Go [[https://tour.golang.org/welcome/1]]
- Effective Go [[https://golang.org/doc/effective_go.html]]
- Go Doc [[https://godoc.org/]]
- Справочник Go [[http://www.cheat-sheets.org/saved-copy/go-lang-cheat-sheet-master.20181212/golang_refcard.pdf]]
- The Zen of Go [[https://the-zen-of-go.netlify.app/]]
* Среда разработки
- Vim;-)
- Visual Studio Code + поддержка go [[https://code.visualstudio.com/docs/setup/linux]]
- GoLand от JetBrains
* Ключевые слова Go
break case chan const continue
default defer else fallthrough for
func go goto if import
interface map package range return
select struct switch type var
* Пакеты и импорты
- Программы Go состоят из пакетов (библиотек)
- Чтобы использовать чужой код, его нужно импортировать
- Имя пакета — это последний элемент пути импорта
- Стандартные пакеты: [[https://golang.org/pkg/]]
.code lesson1/packages.go
* Hello world
.play lesson1/hello.go
.code lesson1/run_hello.go
.code lesson1/build_hello.go
* Поддержка Unicode
.play lesson1/hello_u.go
* Пакеты
- специальный пакет main: main() для исполняемых файлов
- Рабочее пространство определяется $GOPATH
- Структура для библиотек, бинарных файлов: src, bin
* go-fmt
.play lesson1/gofmt1.go
.code lesson1/gofmt.go
.play lesson1/gofmt2.go
* Синтаксис
- Произошёл от C
- Объявления в постфиксной записи
- Экспортируемые символы начинаются с заглавной буквы
- [[https://blog.golang.org/gos-declaration-syntax]]
.code lesson1/syntax_c.go
.code lesson1/syntax_go.go
* Функции
.play lesson1/functions.go
* Множественные возвращаемые значения
.play lesson1/functions2.go
* Множественные возвращаемые значения
.play lesson1/functions2B.go
* Именованные возвращаемые значения
.play lesson1/functions3.go
* Переменные
.play lesson1/vars.go
* Типы
- Похожи на C
- Нет автоматических преобразований
- Вывод типа && типы по умолчанию
- У каждого типа есть четкое нулевое значение (0, false, "")
.code lesson1/types.go
* Вне базовых типов
- math.big/Int
- math.big/Rat
- math.big/Float
* Преобразование типов
- Нет автоматических преобразований
.play lesson1/casts.go
* Константы
.play lesson1/const.go
* Циклы
- Только цикл for, который также служит как цикл while
.play lesson1/for.go
* Циклы
- ключевое слово break
- ключевое слово continue
* Условия
- Как и в цикле for позволяет инициализирующее выражение
- Переменные, объявленные там, не существуют вне блока if
.play lesson1/if.go
* Выражение else
- Переменные, объявленные в инициализирующем выражении, существуют в блоке else
.play lesson1/if2.go
* Выражение switch
- Опять же позволяет инициализирующее выражение
- Как набор выражений if-else
- Оценивается сверху вниз, выполняется первый успешный case
- Поэтому нет выражения break
.play lesson1/switch.go
* Выражение switch 2
- Позволяет неконстантные и неинтеговые значения
.play lesson1/switch2.go
* Switch без условия
- switch без условия как switch true
.play lesson1/switch3.go
* Обработка ошибок
- error — встроенный тип
[[https://blog.golang.org/error-handling-and-go]]
.play lesson1/ret.go
* Игнорирование возвращаемых значений
- идиома '_' может использоваться для отбрасывания возвращаемых значений
.play lesson1/ret2.go
* Полезные ссылки
The Why of Go (многое о Go в контексте)
[[https://www.youtube.com/watch?v=bmZNaUcwBt4&list=WL]]
GothamGo 2018 - Things in Go I Never Use by Mat Ryer
[[https://www.youtube.com/watch?v=5DVV36uqQ4E]]
#last slide
* Больше Gophers
#The Go gopher was designed by Renee French. (http://reneefrench.blogspot.com/)
#Source https://golang.org/doc/gopher/bumper.png
#The design and this image is licensed under the Creative Commons 3.0 Attributions license.
.image ./common/bumper.png _ 900