This commit is contained in:
Slava Zgordan
2015-08-26 02:23:52 +02:00
317 changed files with 16366 additions and 97 deletions

View File

@@ -6,4 +6,4 @@
- [Содержание](preface.md)
- Предыдущий раздел: [Инструменты разработки для Go](01.4.md)
- Следующий раздел: [Основы Go](02.0.md)
- Следующий раздел: [Введение в Go](02.0.md)

View File

@@ -1,17 +1,17 @@
# 2. Основы Go
# 2 Введение в Go
Go - компилируемый язык, созданный для системного программирования, он относится к семейству языков C. Однако, компиляция программ на Go происходит значительно быстрее, чем в других языках этого семейства. В Go существует лишь 25 ключевых слов - меньше, чем 26 букв в английском алфавите! Прежде, чем начать, давайте посмотрим на эти ключевые слова:
Go - компилируемый системный язык программирования, и он относится к С-подобным языкам. Однако, скорость его компиляции намного выше. Он имеет всего 25 ключевых слов... даже меньше чем букв в английском алфавите! Давайте взглянем на эти ключевые слова прежде чем мы начнем.
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
В этом разделе я собираюсь преподать Вам некоторые основы Go. Вы сможете оценить выразительность этого языка и то, красиво он спроектирован. Программировать на Go может быть очень занимательно! По завершении этой главы Вы ознакомитесь с указанными выше ключевыми словами.
В этой главе, я собираюсь научить вас основам Go. Вы обнаружите, насколько лаконичен язык Go, и как превосходна его архитектура. Программирование на Go может быть по-настоящему веселым. После того, как вы закончите эту главу, вы будете знакомы с упомянутыми ключевыми словами.
## Ссылки
- [Содержание](preface.md)
- Предыдущий раздел: [Итоги Раздела 1](01.5.md)
- Следующий раздел: ["Hello, Go"](02.1.md)
- Предыдущий раздел: [Глава 1 Итоги раздела](01.4.md)
- Следующий раздел: ["Привет, Go"](02.1.md)

View File

@@ -1,53 +1,54 @@
# 2.1 Hello, Go
# 2.1 Привет, Go
Перед тем, как разрабатывать приложения на Go, мы должны научиться писать простые программы. Мы не можем узнать, как построить дом без знания от том, как построить фундамент. Поэтому в этом разделе мы изучим основы синтаксиса для того, чтобы писать простые программы.
Прежде чем мы начнем конструировать приложение на Go, нам необходимо научиться писать простые программы. Вы не сможете построить здание, не узнав, сперва, как проложить фундамент. Вследствие чего, в этом разделе мы изучим базовый синтакс для запуска простой программы.
## Программа
Согласно международной практике перед тем, как начать обучение программированию на каком-либо языке, стоит узнать, как написать программу, которая выводит на экран фразу "Hello world".
Согласно международной практике, изучение языков программирования принято начинать с написания программы, которая выводит текст "Hello, World".
Вы готовы? Поехали!
Вы готовы? Let's Go!
package main
import "fmt"
func main() {
fmt.Printf("Hello, world или 你好,世界 или καλημ ́ρα κóσμ или こんにちは世界\n")
fmt.Printf("Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちは世界 or Привет, мир\n")
}
Эта программа печатает следующую информацию:
Hello, world или 你好,世界 или καλημ ́ρα κóσμ или こんにちは世界
Это выводит следующую информацию.
Hello, world or 你好,世界 or καλημ ́ρα κóσμ or こんにちは世界 or Привет, мир
## Объяснение
Первое, что Вы должны запомнить - это то, что программы на Go состоят из пакетов (`package`).
Во-первых программы в Go состоят из `package` (пакетов).
`package <имяПакета>` (В данном случае это `package main`) говорит нам о том, что данный файл исходных кодов относится к пакету `main`, а ключевое слово `main` говорит о том, что этот пакет будет скомпилирован в программу, а не в файлы пакета с расширением `.a`.
`package <pkgName>` (В данном случае `package main`) говорит нам о том, что этот исходный файл принадлежит к `main` пакету. А ключевое слово `main`, что данный пакет должен компилироваться в программу, а не в пакет файлов с расширением `.a`.
Каждая программа должна содержать один и только один пакет `main`. Также в этом пакете должна быть входная функция с именем `main`, которая не принимает никаких аргументов и ничего не возвращает.
Каждая исполняемая программа имеет один и только один `main` пакет, а также вам необходимо реализовать функцию `main` без аргументов и возвращаемых значений.
Для того, чтобы напечатать `Hello, world…` мы вызываем функцию `Printf`. Эта функция находится в пакете `fmt`, поэтому мы импортируем этот пакет в третьей строке нашего кода (`import "fmt"`).
Чтобы вывести `Hello, world…`, мы вызвали функцию `Printf`. Эта функция находится в пакете `fmt`, поэтому нам надо импортировать этот пакет, что мы и делаем в третьей строчке кода - `import "fmt"`.
Пакеты в Go устроены так же, как в Python, и это дает следующие преимущества: модульность (можно разбить программу на несколько модулей) и возможность повторного использования (каждый модуль может быть повторно использован в нескольких программах). Сейчас мы просто поговорили об основных понятиях, относящихся к пакетам, а позже будем создавать наши собственные пакеты.
Пакеты в Go похожи на аналогичные в Python, вот несколько преимуществ пакетов:
Модульность (разбить программу на несколько модулей) и повторное использование (каждый модуль может быть использован во множестве программ). Сейчас мы просто рассмотрели общее представление пакетов, и чуть позже напишем свой собственный пакет.
В пятой строке мы используем ключевое слово `func`, чтобы задать функцию `main`. Тело функции находится внутри фигурных скобок `{}`, как и в C, C++ и Java.
В пятой строке мы использовали ключевое слово `func` для определения функции `main`. Тело функции находится внутри `{}`, прямо как в C, C++ и Java.
Как можно видеть, у этой функции нет аргументов. Вскоре Вы узнаете, как создавать функции с аргументами. Также функции могут возвращать значения либо не возвращать их.
Как вы видите она не принимает ни один аргумент. Мы научимся писать функции, принимающие аргументы всего через минуту, а также функции которые не возвращают значение или возращают несколько.
В шестой строке мы вызываем функцию `Printf` из пакета `fmt`. Функция вызывается в форме `<имяПакета>.<имяФункции>`, что очень похоже на стиль Python.
В шестой строке мы вызываем функцию `Printf`, которая находится в пакете `fmt`. Она была вызвана, используя синтаксис `<pkgName>.<funcName>` (`<имя пакета>.<имя функции>`), в Python-стиле.
Как отмечалось в главе 1, имя пакета и каталога, в котором находится пакет, могут различаться. В приведенном примере `<имяПакета>` задается командой `package <имяПакета>` и не зависит от имени каталога, в котором пакет находится.
Как мы упоминали в 1 главе, имя пакета и имя папки (которая содержит этот пакет) могут быть различными. Здесь `<pkgName>` (`<имя пакета>`) исходит из пакета, а не из имени папки.
Вы можете заметить, что вышеприведенный пример содержит множество символов, не относящихся к ASCII. Мы сделали это для того, чтобы показать, что Go по умолчанию поддерживает UTF-8. В программах можно использовать любой символ UTF-8.
Как вы могли заметить, пример выше содержит множество символов, которых нет в таблице ASCII. Это было нужно для того, чтобы продемонстрировать, что Go поддерживает UTF-8 по-умолчанию. Вы можете использовать в ваших программах любой символ из UTF-8.
## Заключение
Go использует пакеты - `package` (как модули в Python) для организации программ. Функция `main.main()` (она должна находиться в пакете `main`) является входной точкой любой программы. Go поддерживает символы UTF-8, так как один из создателей Go - создатель UTF-8, поэтому Go поддерживает множество языков с момента своего создания.
Go использует `package` (пакет) для структурирования программ. Функция `main.main()` (эта функция находится в пакете `main`) входной пункт каждой программы. Go поддерживает стандарт UTF-8, так как один из создателей Go является также одним из создателей UTF-8, так что Go поддерживает множество языков с самого рождения.
## Ссылки
- [Содержание](preface.md)
- Предыдущий раздел: [Основы Go](02.0.md)
- Следующий раздел: [Фундамент Go](02.2.md)
- Предыдущий раздел: [Введение в Go](02.0.md)
- Следующий раздел: [Основы Go](02.2.md)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 KiB

After

Width:  |  Height:  |  Size: 152 KiB

BIN
ru/images/3.1.dns2_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

After

Width:  |  Height:  |  Size: 51 KiB

BIN
ru/images/3.1.web2_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 76 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 51 KiB

BIN
ru/images/8.4.rpc_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 33 KiB

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 30 KiB

BIN
ru/images/navi10_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

After

Width:  |  Height:  |  Size: 32 KiB

BIN
ru/images/navi11_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 34 KiB

After

Width:  |  Height:  |  Size: 30 KiB

BIN
ru/images/navi12_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 36 KiB

BIN
ru/images/navi13_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 37 KiB

BIN
ru/images/navi14_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
ru/images/navi1_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 40 KiB

BIN
ru/images/navi2_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 34 KiB

BIN
ru/images/navi3_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 32 KiB

BIN
ru/images/navi4_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 42 KiB

BIN
ru/images/navi5_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 38 KiB

BIN
ru/images/navi6_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 41 KiB

After

Width:  |  Height:  |  Size: 37 KiB

BIN
ru/images/navi7_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 35 KiB

BIN
ru/images/navi8_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 37 KiB

BIN
ru/images/navi9_Ru.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB