Skip to content

Commit 33ec5e0

Browse files
authored
Merge pull request astaxie#964 from Hunternnm/master
Update ru/01.0.md ru/03.4.md ru/04.6.md
2 parents fbb40b0 + f00566b commit 33ec5e0

File tree

3 files changed

+14
-20
lines changed

3 files changed

+14
-20
lines changed

Diff for: ru/01.0.md

+4-4
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
Добро пожаловать в мир Go! Давайте начнем.
44

5-
Go - это язык программирования, характерными чертами которого являюся быстрое время компиляции, сборка мусора и многопоточность. Вот список преимуществ Go:
5+
Go - это язык программирования, характерными чертами которого являются быстрое время компиляции, сборка мусора и многопоточность. Вот список преимуществ Go:
66

7-
- Большие проекты компилируюстя за несколько секунд.
7+
- Большие проекты компилируются за несколько секунд.
88
- Модель разработки в Go легко объяснима, Go позволяет избежать большинства проблем, связанных с заголовочными файлами в стиле языка C.
99
- Это статически типизированный язык программирования, в системе типов которого не поддерживается иерархия уровней, поэтому пользователю не нужно тратить время на выяснение отношений между типами. Go, скорее, "легковесный" объектно-ориентированный язык программирования.
10-
- Go обеспечивает сборку мусора. Он предлагает встроенную поддержку конкарентности и протоколов связи.
10+
- Go обеспечивает сборку мусора. Он предлагает встроенную поддержку конкурентности и протоколов связи.
1111
- Разработан для многоядерных процессоров.
1212

13-
Go - компилируемый язык. Он сочетает в себе эффективность разработки интерпретируемых или динамически типизированных языков и безопасность статически типизируемых языков. Его задача - стать оптимальным вариантом среди языков программирования для современных многоядерных компьютеров, работающих в сети. Чтобы стать таким языком, нужно решить несколько задач, таких как поддержка богатой, выразительной и легкой системы типизации, поддержка одновременности выполнения процедур "из коробки" и точно регулируемая сборка мусора. Иногда при программировании на каком-либо языке оказывалось так, что пакетов для решения всех этих задач практичным способом просто не было. Это и явилось причиной появления языка Go.
13+
Go - компилируемый язык. Он сочетает в себе эффективность разработки интерпретируемых или динамически типизированных языков и безопасность статически типизируемых языков. Его задача - стать оптимальным вариантом среди языков программирования для современных многоядерных компьютеров, работающих в сети. Чтобы стать таким языком, нужно решить несколько задач, таких как поддержка богатой, выразительной и легкой системы типизации, поддержка одновременного выполнения процедур "из коробки" и точно регулируемая сборка мусора. Иногда при программировании на каком-либо языке оказывалось так, что пакетов для решения всех этих задач практичным способом просто не было. Это и явилось причиной появления языка Go.
1414

1515
В этой главе я покажу, как установить и настроить среду разработки на Go.
1616

Diff for: ru/03.4.md

+10-10
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
## Использование горутин в функции Conn
66

7-
В отличии от обычных HTTP серверов, Go использует гоурутины при каждом обращении к функции Conn. За счет эго обеспечивается высокая производительность и параллельная обработка.
7+
В отличии от обычных HTTP серверов, Go использует горутины при каждом обращении к функции Conn. За счет эго обеспечивается высокая производительность и параллельная обработка.
88

99
Go использует следующий код для ожидания новых подключений от клиента:
1010

@@ -40,10 +40,10 @@ Go использует следующий код для ожидания нов
4040
ServeHTTP(ResponseWriter, *Request) // реализация маршрутизации
4141
}
4242

43-
`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`.
4444

4545
type HandlerFunc func(ResponseWriter, *Request)
46-
46+
4747
// ServeHTTP вызывает f(w, r).
4848
func (f HandlerFunc) ServeHTTP(w ResponseWriter, r *Request) {
4949
f(w, r)
@@ -58,7 +58,7 @@ Go использует следующий код для ожидания нов
5858
func (mux *ServeMux) handler(r *Request) Handler {
5959
mux.mu.RLock()
6060
defer mux.mu.RUnlock()
61-
61+
6262
// Host-зависимый шаблон, имеет приоритет над универсальным
6363
h := mux.match(r.Host + r.URL.Path)
6464
if h == nil {
@@ -72,20 +72,20 @@ Go использует следующий код для ожидания нов
7272

7373
Маршрутизатор использует URL-адрес в качестве ключа для поиска соответствующего обработчика, который сохранен в карте и вызовов handler.ServeHTTP для выполнения функций обработки данных.
7474

75-
Теперь вы должны понимать принципы работы роутера. Фактически, Go поддерживает настраиваемые роутеры. Второй аргумент функции `ListenAndServe` необходим для конфигурации настраиваемого роутера с типом `Handler`. Таким образом любой роутер реализует интерфейс `Handler`.
75+
Теперь вы должны понимать принципы работы роутера. Фактически, Go поддерживает настраиваемые роутеры. Второй аргумент функции `ListenAndServe` необходим для конфигурации настраиваемого роутера с типом `Handler`. Таким образом, любой роутер реализует интерфейс `Handler`.
7676

7777
Следующий пример покажет, как реализовать простой роутер.
7878

7979
package main
80-
80+
8181
import (
8282
"fmt"
8383
"net/http"
8484
)
85-
85+
8686
type MyMux struct {
8787
}
88-
88+
8989
func (p *MyMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
9090
if r.URL.Path == "/" {
9191
sayhelloName(w, r)
@@ -94,11 +94,11 @@ Go использует следующий код для ожидания нов
9494
http.NotFound(w, r)
9595
return
9696
}
97-
97+
9898
func sayhelloName(w http.ResponseWriter, r *http.Request) {
9999
fmt.Fprintf(w, "Hello myroute!")
100100
}
101-
101+
102102
func main() {
103103
mux := &MyMux{}
104104
http.ListenAndServe(":9090", mux)

Diff for: ru/04.6.md

-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
1-
<<<<<<< HEAD
2-
# 4.6 Итоги главы
3-
4-
В этой главе мы изучили основные моменты того, как работать с данными в Go, посредством нескольких примеров, таких как обработка входа пользователей и загрузка файлов. Мы также заострили внимание на том, что проверка данных крайне важна для безопасности сайта, а также посвятили одну секцию тому, как фильтровать входные данные посредством регулярных выражений.
5-
=======
61
# 4.6 Итоги раздела
72

83
В этом разделе мы изучили основные моменты того, как работать с данными в Go, посредством нескольких примеров, таких как обработка входа пользователей и загрузка файлов. Мы также заострили внимание на том, что проверка данных крайне важна для безопасности сайта, а также посвятили одну секцию тому, как фильтровать входные данные посредством регулярных выражений.
9-
>>>>>>> eead24cf064976b648de5826eab51880c803b0fa
104

115
Я надеюсь, что теперь Вы больше знаете о процессе коммуникации между клиентом и сервером.
126

0 commit comments

Comments
 (0)