From 2248a1bb4e196d7d856b7da7c4d9d727d3d8faf6 Mon Sep 17 00:00:00 2001 From: Andrey Krasavin Date: Wed, 20 Feb 2019 16:21:30 +0300 Subject: [PATCH] misspells fixed --- ru/02.3.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ru/02.3.md b/ru/02.3.md index 4b674d9..e29e0cb 100644 --- a/ru/02.3.md +++ b/ru/02.3.md @@ -147,7 +147,7 @@ default: fmt.Println("Все, что я знаю - это то, что i - целое число") } ``` -В пятой строке мы поместили несколько значений в один `case`; нам также не надо писать ключевое слово `break` в конце тела `case`. При выполнении какого-либо условия цикл прекратитсяавтоматически. Если Вы хотите продолжать проверку, нужно использовать выражение `fallthrough`. +В пятой строке мы поместили несколько значений в один `case`; нам также не надо писать ключевое слово `break` в конце тела `case`. При выполнении какого-либо условия цикл прекратится автоматически. Если Вы хотите продолжать проверку, нужно использовать выражение `fallthrough`. ```Go integer := 6 switch integer { @@ -189,7 +189,7 @@ func funcName(input1 type1, input2 type2) (output1 type1, output2 type2) { ``` Мы можем сделать вывод из примера выше: -- Нужно использовать ключевое слово `func` длы того, чтобы определить функцию `funcName`. +- Нужно использовать ключевое слово `func` для того, чтобы определить функцию `funcName`. - Функции могут не возвращать аргументов или возвращать один или несколько. Тип аргумента следует после его имени, аргументы разделяются запятой `,`. - Функции могут возвращать множество значений. - В примере есть два значение `output1` и `output2`, Вы можете опустить их имена и использовать только типы. @@ -249,7 +249,7 @@ func main() { fmt.Printf("%d * %d = %d\n", x, y, xTIMESy) } ``` -В вышеприведенном примере два значения возвращаются без имен; также можно и дать им имена. Если мы именуем переменные, которые будут возвращаться, нам нужно лишь написать `return`, чтобы возвратить значения, так как то, что надо возвращать, уже определено в функции автоматически. Имейте в виду, что если Вы собираетесь использовать функцию вне пакета (что означает, что Вы должны именовать эту фунцкию с заглавной буквы), лучше указывавйте полную форму `return`; это сделает Ваш код более читаемым. +В вышеприведенном примере два значения возвращаются без имен; также можно и дать им имена. Если мы именуем переменные, которые будут возвращаться, нам нужно лишь написать `return`, чтобы возвратить значения, так как то, что надо возвращать, уже определено в функции автоматически. Имейте в виду, что если Вы собираетесь использовать функцию вне пакета (что означает, что Вы должны именовать эту функцию с заглавной буквы), лучше указывайте полную форму `return`; это сделает Ваш код более читаемым. ```Go func SumAndProduct(A, B int) (add int, Multiplied int) { add = A+B @@ -297,11 +297,11 @@ func main() { ``` Видите? Несмотря на то, что мы вызвали функцию `add1` с `x`, изначальное значение `x` не изменилось. -Причина очерь проста: когда мы вызвали `add1`, мы передали в нее копию `x`, а не сам `x`. +Причина очень проста: когда мы вызвали `add1`, мы передали в нее копию `x`, а не сам `x`. Теперь Вы можете спросить, как передать в функцию сам `x`? -В этом случе нам нужно использовать указатели. Мы знаем, что переменные хранятся в памяти и у них есть адреса. Итак, если мы хотим изменить значение переменной, мы меняем значение, находящееся в памяти по соответствующему ей адресу. Поэтому, для того, чтобы изменить значение `x`, `add1` должна знать адрес `x` в памяти. Здесь мы передаем `&x` в функцию и меняем тип аргумента на тип указателя `*int`. Мы передаем в функцию копию указателя, не копию значения. +В этом случае нам нужно использовать указатели. Мы знаем, что переменные хранятся в памяти и у них есть адреса. Итак, если мы хотим изменить значение переменной, мы меняем значение, находящееся в памяти по соответствующему ей адресу. Поэтому, для того, чтобы изменить значение `x`, `add1` должна знать адрес `x` в памяти. Здесь мы передаем `&x` в функцию и меняем тип аргумента на тип указателя `*int`. Мы передаем в функцию копию указателя, не копию значения. ```Go package main import "fmt" @@ -424,7 +424,7 @@ func main(){ В Go, в отличии от Java, нет структуры `try-catch`. Вместо того, чтобы "кидать" исключения, для работы с ошибками Go использует `panic` и `recover`. Однако, не стоит использовать `panic` слишком много, несмотря на его мощность. -Panic - это встроенная функция, которая прерыавает ход программы и включает статус "паники". Когда функция `F` вызывает `panic`, `F` не продолжит после этого свое исполнение, но функции `defer` выполняться. Затем `F` возвращается к той точке своего выполнения, где была вызвана panic. Пока все функции не вернут panic функциям уровнем выше, которые их вызвали, программа не прервет своего выполнения. `panic` может произойти в результате вызова `panic` в программе, также некоторыен ошибки вызывают `panic` как, например, при попытке доступа к массиву за его пределами. +Panic - это встроенная функция, которая прерывает ход программы и включает статус "паники". Когда функция `F` вызывает `panic`, `F` не продолжит после этого свое исполнение, но функции `defer` выполняться. Затем `F` возвращается к той точке своего выполнения, где была вызвана panic. Пока все функции не вернут panic функциям уровнем выше, которые их вызвали, программа не прервет своего выполнения. `panic` может произойти в результате вызова `panic` в программе, также некоторые ошибки вызывают `panic` как, например, при попытке доступа к массиву за его пределами. Recover - это встроенная функция для восстановления `горутин` из состояния panic. Нормально будет вызывать `recover` в функциях `defer`, так как обычные функции не буду выполняться, если программа находится в состоянии panic. Эта функция получает значение `panic`, если программа находится в состоянии panic, и `nil`, если не находится. @@ -474,7 +474,7 @@ import( ```Go fmt.Println("hello world") ``` -`fmt` находится в стандртной библиотеке Go, он располагается в $GOROOT/pkg. Go поддерживает сторонние пакеты двумя способами: +`fmt` находится в стандартной библиотеке Go, он располагается в $GOROOT/pkg. Go поддерживает сторонние пакеты двумя способами: 1. Относительный путь import "./model" // импортирует пакет из той же директории, где находится программа, я не рекомендую этот способ. @@ -504,7 +504,7 @@ fmt.Println("hello world") _ "github.com/ziutek/mymysql/godrv" ) - Оператор `_` означает, что мы просто хотим импортировать пакет и выполнить его функцию `init`, но не уверены, будем ли мы использовать фунцкии, которые он содержит. + Оператор `_` означает, что мы просто хотим импортировать пакет и выполнить его функцию `init`, но не уверены, будем ли мы использовать функции, которые он содержит. ## Ссылки -- GitLab