You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: ru/01.0.md
+4-4
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,15 @@
2
2
3
3
Добро пожаловать в мир Go! Давайте начнем.
4
4
5
-
Go - это язык программирования, характерными чертами которого являюся быстрое время компиляции, сборка мусора и многопоточность. Вот список преимуществ Go:
5
+
Go - это язык программирования, характерными чертами которого являются быстрое время компиляции, сборка мусора и многопоточность. Вот список преимуществ Go:
6
6
7
-
- Большие проекты компилируюстя за несколько секунд.
7
+
- Большие проекты компилируются за несколько секунд.
8
8
- Модель разработки в Go легко объяснима, Go позволяет избежать большинства проблем, связанных с заголовочными файлами в стиле языка C.
9
9
- Это статически типизированный язык программирования, в системе типов которого не поддерживается иерархия уровней, поэтому пользователю не нужно тратить время на выяснение отношений между типами. Go, скорее, "легковесный" объектно-ориентированный язык программирования.
10
-
- Go обеспечивает сборку мусора. Он предлагает встроенную поддержку конкарентности и протоколов связи.
10
+
- Go обеспечивает сборку мусора. Он предлагает встроенную поддержку конкурентности и протоколов связи.
11
11
- Разработан для многоядерных процессоров.
12
12
13
-
Go - компилируемый язык. Он сочетает в себе эффективность разработки интерпретируемых или динамически типизированных языков и безопасность статически типизируемых языков. Его задача - стать оптимальным вариантом среди языков программирования для современных многоядерных компьютеров, работающих в сети. Чтобы стать таким языком, нужно решить несколько задач, таких как поддержка богатой, выразительной и легкой системы типизации, поддержка одновременности выполнения процедур "из коробки" и точно регулируемая сборка мусора. Иногда при программировании на каком-либо языке оказывалось так, что пакетов для решения всех этих задач практичным способом просто не было. Это и явилось причиной появления языка Go.
13
+
Go - компилируемый язык. Он сочетает в себе эффективность разработки интерпретируемых или динамически типизированных языков и безопасность статически типизируемых языков. Его задача - стать оптимальным вариантом среди языков программирования для современных многоядерных компьютеров, работающих в сети. Чтобы стать таким языком, нужно решить несколько задач, таких как поддержка богатой, выразительной и легкой системы типизации, поддержка одновременного выполнения процедур "из коробки" и точно регулируемая сборка мусора. Иногда при программировании на каком-либо языке оказывалось так, что пакетов для решения всех этих задач практичным способом просто не было. Это и явилось причиной появления языка Go.
14
14
15
15
В этой главе я покажу, как установить и настроить среду разработки на Go.
Copy file name to clipboardExpand all lines: ru/03.4.md
+10-10
Original file line number
Diff line number
Diff line change
@@ -4,7 +4,7 @@
4
4
5
5
## Использование горутин в функции Conn
6
6
7
-
В отличии от обычных HTTP серверов, Go использует гоурутины при каждом обращении к функции Conn. За счет эго обеспечивается высокая производительность и параллельная обработка.
7
+
В отличии от обычных HTTP серверов, Go использует горутины при каждом обращении к функции Conn. За счет эго обеспечивается высокая производительность и параллельная обработка.
8
8
9
9
Go использует следующий код для ожидания новых подключений от клиента:
10
10
@@ -40,10 +40,10 @@ Go использует следующий код для ожидания нов
`Handler` - это интерфейс, однако, функция `sayhelloName` не реализует этот интерфейс. Почему, в таком случае, мы смогли использовать ее в качестве обработчика? Потому, что в пакете `http` существует другой тип `HandlerFunc`. В нашем нашем сервере из раздела 3.2 при вызове `HandlerFunc` происходит автоматическое приведение нашей функции `sayhelloName` к интерфейсу `Handler`. Это равносильно вызову `HandlerFunc(f)`, при этом `f` будет принудительно приведена к типу `HandlerFunc`.
43
+
`Handler` - это интерфейс, однако, функция `sayhelloName` не реализует этот интерфейс. Почему, в таком случае, мы смогли использовать ее в качестве обработчика? Потому, что в пакете `http` существует другой тип `HandlerFunc`. В нашем сервере из раздела 3.2 при вызове `HandlerFunc` происходит автоматическое приведение нашей функции `sayhelloName` к интерфейсу `Handler`. Это равносильно вызову `HandlerFunc(f)`, при этом `f` будет принудительно приведена к типу `HandlerFunc`.
44
44
45
45
type HandlerFunc func(ResponseWriter, *Request)
46
-
46
+
47
47
// ServeHTTP вызывает f(w, r).
48
48
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
49
49
f(w, r)
@@ -58,7 +58,7 @@ Go использует следующий код для ожидания нов
// Host-зависимый шаблон, имеет приоритет над универсальным
63
63
h := mux.match(r.Host + r.URL.Path)
64
64
if h == nil {
@@ -72,20 +72,20 @@ Go использует следующий код для ожидания нов
72
72
73
73
Маршрутизатор использует URL-адрес в качестве ключа для поиска соответствующего обработчика, который сохранен в карте и вызовов handler.ServeHTTP для выполнения функций обработки данных.
74
74
75
-
Теперь вы должны понимать принципы работы роутера. Фактически, Go поддерживает настраиваемые роутеры. Второй аргумент функции `ListenAndServe` необходим для конфигурации настраиваемого роутера с типом `Handler`. Таким образом любой роутер реализует интерфейс `Handler`.
75
+
Теперь вы должны понимать принципы работы роутера. Фактически, Go поддерживает настраиваемые роутеры. Второй аргумент функции `ListenAndServe` необходим для конфигурации настраиваемого роутера с типом `Handler`. Таким образом, любой роутер реализует интерфейс `Handler`.
76
76
77
77
Следующий пример покажет, как реализовать простой роутер.
78
78
79
79
package main
80
-
80
+
81
81
import (
82
82
"fmt"
83
83
"net/http"
84
84
)
85
-
85
+
86
86
type MyMux struct {
87
87
}
88
-
88
+
89
89
func (p *MyMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
90
90
if r.URL.Path == "/" {
91
91
sayhelloName(w, r)
@@ -94,11 +94,11 @@ Go использует следующий код для ожидания нов
94
94
http.NotFound(w, r)
95
95
return
96
96
}
97
-
97
+
98
98
func sayhelloName(w http.ResponseWriter, r *http.Request) {
Copy file name to clipboardExpand all lines: ru/04.6.md
-6
Original file line number
Diff line number
Diff line change
@@ -1,12 +1,6 @@
1
-
<<<<<<< HEAD
2
-
# 4.6 Итоги главы
3
-
4
-
В этой главе мы изучили основные моменты того, как работать с данными в Go, посредством нескольких примеров, таких как обработка входа пользователей и загрузка файлов. Мы также заострили внимание на том, что проверка данных крайне важна для безопасности сайта, а также посвятили одну секцию тому, как фильтровать входные данные посредством регулярных выражений.
5
-
=======
6
1
# 4.6 Итоги раздела
7
2
8
3
В этом разделе мы изучили основные моменты того, как работать с данными в Go, посредством нескольких примеров, таких как обработка входа пользователей и загрузка файлов. Мы также заострили внимание на том, что проверка данных крайне важна для безопасности сайта, а также посвятили одну секцию тому, как фильтровать входные данные посредством регулярных выражений.
9
-
>>>>>>> eead24cf064976b648de5826eab51880c803b0fa
10
4
11
5
Я надеюсь, что теперь Вы больше знаете о процессе коммуникации между клиентом и сервером.
0 commit comments