mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2025-05-05 14:28:31 +00:00
Merge pull request #742 from xboston/patch-1
Errors correction in the Russian ( Golang ) language / Исправление ошибок русского языка
This commit is contained in:
commit
3f60e0a9f3
@ -13,11 +13,11 @@ lang: ru-ru
|
|||||||
---
|
---
|
||||||
|
|
||||||
Go - это язык общего назначения, целью которого является удобство, простота,
|
Go - это язык общего назначения, целью которого является удобство, простота,
|
||||||
конкуррентность. Это не тренд в компьютерных науках, а новейший и быстрый
|
конкурентность. Это не тренд в компьютерных науках, а новейший и быстрый
|
||||||
способ решать насущные проблемы.
|
способ решать насущные проблемы.
|
||||||
|
|
||||||
Концепции Go схожи с другими императивными статически типизированными языками.
|
Концепции Go схожи с другими императивными статически типизированными языками.
|
||||||
Быстро компилируется и быстро исполняется, имеет легкие в понимании конструкции
|
Быстро компилируется и быстро исполняется, имеет лёгкие в понимании конструкции
|
||||||
для создания масштабируемых и многопоточных программ.
|
для создания масштабируемых и многопоточных программ.
|
||||||
|
|
||||||
Может похвастаться отличной стандартной библиотекой и большим комьюнити, полным
|
Может похвастаться отличной стандартной библиотекой и большим комьюнити, полным
|
||||||
@ -57,7 +57,7 @@ func main() {
|
|||||||
func beyondHello() {
|
func beyondHello() {
|
||||||
var x int // Переменные должны быть объявлены до их использования.
|
var x int // Переменные должны быть объявлены до их использования.
|
||||||
x = 3 // Присвоение значения переменной.
|
x = 3 // Присвоение значения переменной.
|
||||||
// Краткое определение := позволяет объявить перменную с автоматической
|
// Краткое определение := позволяет объявить переменную с автоматической
|
||||||
// подстановкой типа из значения.
|
// подстановкой типа из значения.
|
||||||
y := 4
|
y := 4
|
||||||
sum, prod := learnMultiple(x, y) // Функция возвращает два значения.
|
sum, prod := learnMultiple(x, y) // Функция возвращает два значения.
|
||||||
@ -70,7 +70,7 @@ func learnMultiple(x, y int) (sum, prod int) {
|
|||||||
return x + y, x * y // Возврат двух значений.
|
return x + y, x * y // Возврат двух значений.
|
||||||
}
|
}
|
||||||
|
|
||||||
// Некотрые встроенные типы и литералы.
|
// Некоторые встроенные типы и литералы.
|
||||||
func learnTypes() {
|
func learnTypes() {
|
||||||
// Краткое определение переменной говорит само за себя.
|
// Краткое определение переменной говорит само за себя.
|
||||||
s := "Learn Go!" // Тип string.
|
s := "Learn Go!" // Тип string.
|
||||||
@ -97,7 +97,7 @@ func learnTypes() {
|
|||||||
|
|
||||||
// Слайсы (slices) имеют динамическую длину. И массивы, и слайсы имеют свои
|
// Слайсы (slices) имеют динамическую длину. И массивы, и слайсы имеют свои
|
||||||
// преимущества, но слайсы используются гораздо чаще.
|
// преимущества, но слайсы используются гораздо чаще.
|
||||||
s3 := []int{4, 5, 9} // Сравните с a3. Тут нет троеточия.
|
s3 := []int{4, 5, 9} // Сравните с a3, тут нет троеточия.
|
||||||
s4 := make([]int, 4) // Выделение памяти для слайса из 4-х int (нули).
|
s4 := make([]int, 4) // Выделение памяти для слайса из 4-х int (нули).
|
||||||
var d2 [][]float64 // Только объявление, память не выделяется.
|
var d2 [][]float64 // Только объявление, память не выделяется.
|
||||||
bs := []byte("a slice") // Синтаксис приведения типов.
|
bs := []byte("a slice") // Синтаксис приведения типов.
|
||||||
@ -113,7 +113,7 @@ func learnTypes() {
|
|||||||
delete(m, "three") // Встроенная функция, удаляет элемент из map-а.
|
delete(m, "three") // Встроенная функция, удаляет элемент из map-а.
|
||||||
|
|
||||||
// Неиспользуемые переменные в Go являются ошибкой.
|
// Неиспользуемые переменные в Go являются ошибкой.
|
||||||
// Нижнее подчеркивание позволяет игнорировать такие переменные.
|
// Нижнее подчёркивание позволяет игнорировать такие переменные.
|
||||||
_, _, _, _, _, _, _, _, _ = s2, g, f, u, pi, n, a3, s4, bs
|
_, _, _, _, _, _, _, _, _ = s2, g, f, u, pi, n, a3, s4, bs
|
||||||
// Вывод считается использованием переменной.
|
// Вывод считается использованием переменной.
|
||||||
fmt.Println(s, c, a4, s3, d2, m)
|
fmt.Println(s, c, a4, s3, d2, m)
|
||||||
@ -121,16 +121,16 @@ func learnTypes() {
|
|||||||
learnFlowControl() // Идем дальше.
|
learnFlowControl() // Идем дальше.
|
||||||
}
|
}
|
||||||
|
|
||||||
// У Go есть полноценный сборщик мусора. В нем есть указатели но нет арифметики
|
// У Go есть полноценный сборщик мусора. В нем есть указатели, но нет арифметики
|
||||||
// указателей. Вы можете допустить ошибку с указателем на nil, но не с
|
// указателей. Вы можете допустить ошибку с указателем на nil, но не с
|
||||||
// инкрементацией указателя.
|
// инкрементацией указателя.
|
||||||
func learnMemory() (p, q *int) {
|
func learnMemory() (p, q *int) {
|
||||||
// Именованные возвращаемые значения p и q являются указателями на int.
|
// Именованные возвращаемые значения p и q являются указателями на int.
|
||||||
p = new(int) // Встроенная функция new выделяет память.
|
p = new(int) // Встроенная функция new выделяет память.
|
||||||
// Выделенный int проинициализирован нулем, p больше не содержит nil.
|
// Выделенный int проинициализирован нулём, p больше не содержит nil.
|
||||||
s := make([]int, 20) // Выделение единого блока памяти под 20 int-ов.
|
s := make([]int, 20) // Выделение единого блока памяти под 20 int-ов.
|
||||||
s[3] = 7 // Присвоить значение одному из них.
|
s[3] = 7 // Присвоить значение одному из них.
|
||||||
r := -2 // Определить еще одну локальную переменную.
|
r := -2 // Определить ещё одну локальную переменную.
|
||||||
return &s[3], &r // Амперсанд(&) обозначает получение адреса переменной.
|
return &s[3], &r // Амперсанд(&) обозначает получение адреса переменной.
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -139,7 +139,7 @@ func expensiveComputation() float64 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func learnFlowControl() {
|
func learnFlowControl() {
|
||||||
// If-ы всегда требуют наличине фигурных скобок, но не круглых.
|
// If-ы всегда требуют наличие фигурных скобок, но не круглых.
|
||||||
if true {
|
if true {
|
||||||
fmt.Println("told ya")
|
fmt.Println("told ya")
|
||||||
}
|
}
|
||||||
@ -178,7 +178,7 @@ func learnFlowControl() {
|
|||||||
}
|
}
|
||||||
// Функции являются замыканиями.
|
// Функции являются замыканиями.
|
||||||
xBig := func() bool {
|
xBig := func() bool {
|
||||||
return x > 10000 // Ссылается на x, объявленый выше switch.
|
return x > 10000 // Ссылается на x, объявленный выше switch.
|
||||||
}
|
}
|
||||||
fmt.Println("xBig:", xBig()) // true (т.к. мы присвоили x = e^10).
|
fmt.Println("xBig:", xBig()) // true (т.к. мы присвоили x = e^10).
|
||||||
x = 1.3e3 // Тут х == 1300
|
x = 1.3e3 // Тут х == 1300
|
||||||
@ -189,7 +189,7 @@ func learnFlowControl() {
|
|||||||
love:
|
love:
|
||||||
|
|
||||||
learnDefer() // Быстрый обзор важного ключевого слова.
|
learnDefer() // Быстрый обзор важного ключевого слова.
|
||||||
learnInterfaces() // О! Интерфейсы, идем далее.
|
learnInterfaces() // О! Интерфейсы, идём далее.
|
||||||
}
|
}
|
||||||
|
|
||||||
func learnDefer() (ok bool) {
|
func learnDefer() (ok bool) {
|
||||||
@ -214,7 +214,7 @@ type pair struct {
|
|||||||
|
|
||||||
// Объявление метода для типа pair. Теперь pair реализует интерфейс Stringer.
|
// Объявление метода для типа pair. Теперь pair реализует интерфейс Stringer.
|
||||||
func (p pair) String() string { // p в данном случае называют receiver-ом.
|
func (p pair) String() string { // p в данном случае называют receiver-ом.
|
||||||
// Sprintf – еще одна функция из пакета fmt.
|
// Sprintf – ещё одна функция из пакета fmt.
|
||||||
// Обращение к полям p через точку.
|
// Обращение к полям p через точку.
|
||||||
return fmt.Sprintf("(%d, %d)", p.x, p.y)
|
return fmt.Sprintf("(%d, %d)", p.x, p.y)
|
||||||
}
|
}
|
||||||
@ -234,7 +234,7 @@ func learnInterfaces() {
|
|||||||
fmt.Println(p) // Вывод такой же, что и выше. Println вызывает метод String.
|
fmt.Println(p) // Вывод такой же, что и выше. Println вызывает метод String.
|
||||||
fmt.Println(i) // Вывод такой же, что и выше.
|
fmt.Println(i) // Вывод такой же, что и выше.
|
||||||
|
|
||||||
learnVariadicParams("Учиться", "учиться", "и еще раз учиться!")
|
learnVariadicParams("Учиться", "учиться", "и ещё раз учиться!")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Функции могут иметь варьируемое количество параметров.
|
// Функции могут иметь варьируемое количество параметров.
|
||||||
@ -263,22 +263,22 @@ func learnErrorHandling() {
|
|||||||
// выведет "strconv.ParseInt: parsing "non-int": invalid syntax"
|
// выведет "strconv.ParseInt: parsing "non-int": invalid syntax"
|
||||||
fmt.Println(err)
|
fmt.Println(err)
|
||||||
}
|
}
|
||||||
// Мы еще обратимся к интерфейсам чуть позже, а пока...
|
// Мы ещё обратимся к интерфейсам чуть позже, а пока...
|
||||||
learnConcurrency()
|
learnConcurrency()
|
||||||
}
|
}
|
||||||
|
|
||||||
// c – это тип данных channel (канал), объект для конкуррентного взаимодействия.
|
// c – это тип данных channel (канал), объект для конкурентного взаимодействия.
|
||||||
func inc(i int, c chan int) {
|
func inc(i int, c chan int) {
|
||||||
c <- i + 1 // когда channel слева, <- являтся оператором "отправки".
|
c <- i + 1 // когда channel слева, <- являтся оператором "отправки".
|
||||||
}
|
}
|
||||||
|
|
||||||
// Будем использовать функцию inc для конкуррентной инкрементации чисел.
|
// Будем использовать функцию inc для конкурентной инкрементации чисел.
|
||||||
func learnConcurrency() {
|
func learnConcurrency() {
|
||||||
// Тот же make, что и в случае со slice. Он предназначен для выделения
|
// Тот же make, что и в случае со slice. Он предназначен для выделения
|
||||||
// памяти и инициализации типов slice, map и channel.
|
// памяти и инициализации типов slice, map и channel.
|
||||||
c := make(chan int)
|
c := make(chan int)
|
||||||
// Старт трех конкуррентных goroutine. Числа будут инкрементированы
|
// Старт трех конкурентных goroutine. Числа будут инкрементированы
|
||||||
// конкуррентно и, может быть параллельно, если машина правильно
|
// конкурентно и, может быть параллельно, если машина правильно
|
||||||
// сконфигурирована и позволяет это делать. Все они будут отправлены в один
|
// сконфигурирована и позволяет это делать. Все они будут отправлены в один
|
||||||
// и тот же канал.
|
// и тот же канал.
|
||||||
go inc(0, c) // go начинает новую горутину.
|
go inc(0, c) // go начинает новую горутину.
|
||||||
@ -291,7 +291,7 @@ func learnConcurrency() {
|
|||||||
cs := make(chan string) // другой канал, содержит строки.
|
cs := make(chan string) // другой канал, содержит строки.
|
||||||
cc := make(chan chan string) // канал каналов со строками.
|
cc := make(chan chan string) // канал каналов со строками.
|
||||||
go func() { c <- 84 }() // пуск новой горутины для отправки значения
|
go func() { c <- 84 }() // пуск новой горутины для отправки значения
|
||||||
go func() { cs <- "wordy" }() // еще раз, теперь для cs
|
go func() { cs <- "wordy" }() // ещё раз, теперь для cs
|
||||||
// Select тоже что и switch, но работает с каналами. Он случайно выбирает
|
// Select тоже что и switch, но работает с каналами. Он случайно выбирает
|
||||||
// готовый для взаимодействия канал.
|
// готовый для взаимодействия канал.
|
||||||
select {
|
select {
|
||||||
@ -327,7 +327,7 @@ func (p pair) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
Основа всех основ в Go это [официальный веб сайт](http://golang.org/).
|
Основа всех основ в Go это [официальный веб сайт](http://golang.org/).
|
||||||
Там можно пройти туториал, поиграться с интерактивной средой Go и почитать
|
Там можно пройти туториал, поиграться с интерактивной средой Go и почитать
|
||||||
объемную документацию.
|
объёмную документацию.
|
||||||
|
|
||||||
Для живого ознакомления рекомендуется почитать исходные коды [стандартной
|
Для живого ознакомления рекомендуется почитать исходные коды [стандартной
|
||||||
библиотеки Go](http://golang.org/src/pkg/). Отлично задокументированная, она
|
библиотеки Go](http://golang.org/src/pkg/). Отлично задокументированная, она
|
||||||
|
Loading…
Reference in New Issue
Block a user