Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Перевод methods.article #12

Merged
merged 13 commits into from
Feb 13, 2018
Merged

Conversation

ilya-shikhaleev
Copy link

No description provided.

Go does not have classes.
However, you can define methods on types.
В Go нет классов.
Впрочем, вы можете определять методы на типах.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А как вам перевод "методы на типах" -> "методы для типов"?

That is, as a convenience, Go interprets the statement `v.Scale(5)` as
`(&v).Scale(5)` since the `Scale` method has a pointer receiver.
Для оператора `v.Scale(5)`, даже если `v` это значение, а не указатель,
метод с приемником-указателем, вызовется автоматичестки.
Copy link

@dmpichugin dmpichugin Mar 19, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"метод с приемником-указателем, вызовется автоматичестки."
"автоматически", без "т" и последняя запятая вроде бы не нужна.

@@ -1,387 +1,559 @@
Methods and interfaces
This lesson covers methods and interfaces, the constructs that define objects and their behavior.
Методы и итерфейсы

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

иНтерфейсы

Copy link

@dmpichugin dmpichugin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

опечатки


Методы с приемником-указателем могут изменять значение, на которое указывает
приемник (как здесь делает `Scale`).
Поскольку часто необходимо в методах изменять приемник, более распростарнен приемник-указатель,
Copy link

@dmpichugin dmpichugin Mar 19, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

распростРАнен, приемникА


.play methods/methods-pointers-explained.go

* Methods and pointer indirection
* Методы и косвеность указателей

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

косвеННость


.play methods/indirection.go

* Methods and pointer indirection (2)
* Методы и косвеность указателей (2)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

косвеННость

(We'll see why over the next few pages.)
В общем, у всех методов для данного типа приемник должен быть либо значением, либо указателем,
но не смесью того и другого.
(Мы увидим почему на следущих страницах.)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

следуЮщих


Implicit interfaces decouple the definition of an interface from its
implementation, which could then appear in any package without prearrangement.
Неявные интерфейсы разделяют определение интерфеса от его реализации,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

интерфеЙса

This statement asserts that the interface value `i` holds the concrete type `T`
and assigns the underlying `T` value to the variable `t`.
Этот оператор утверждает, что значение интерфеса `i` имеет конкретный тип `T`
и присваевает значение типа `T` переменной `t`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

присваИвает

switch specify types (not values), and those values are compared against
the type of the value held by the given interface value.
Switch по типу - это как обычная инструкция switch, но в разделах case указываются
типы (не значения), и эти типы сравниваются с типом передоваемого значения, хранящегося в

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

передАваемого


Functions often return an `error` value, and calling code should handle errors
by testing whether the error equals `nil`.
Функции часто возвращают значение `error`, и вызываютщий код должен обрабатывать

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"вызывающий" без "т"


`Sqrt` should return a non-nil error value when given a negative number, as it doesn't support complex numbers.
`Sqrt` должна возвращать ненулевую ошибку, если ей передано отрицательное число, поскольку
она не поддерживает комплекстные числа.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"комплексные" без "т"

`Read` populates the given byte slice with data and returns the number of bytes
populated and an error value. It returns an `io.EOF` error when the stream
ends.
`Read` заполняет данными переданный слайс байт и возвращает количетсво заполнненных байт

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

количеСТво, заполненных (одна "н" в первом случае)


In this example, the `Abs` method has a receiver of type `Vertex` named `v`.
В этом примере метод `Abs` имеет приемник типа` Vertex` с именем `v`.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

типа `Vertex` . Пробел не там

`(&v).Scale(5)` since the `Scale` method has a pointer receiver.
Для оператора `v.Scale(5)`, даже если `v` это значение, а не указатель,
метод с приемником-указателем, вызовется автоматичестки.
То есть, для удобства, Go интерпретирует оператор `v.Scale(5)` как `(&v).Scale(5)`,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"для удобства Go ..." вроде бы запятая не нужна


Functions that take a value argument must take a value of that specific type:
Функции, которые принимают аргумент по значению должны получать значение этого конкретного типа:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"...аргумент по значению, должны ..." вроде бы нужна запятая

Implicit interfaces decouple the definition of an interface from its
implementation, which could then appear in any package without prearrangement.
Неявные интерфейсы разделяют определение интерфеса от его реализации,
которая в последствии может появится в любом пакете без необходимости

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

появитЬся


Under the covers, interface values can be thought of as a tuple of a value and a
concrete type:
Под капотом, интерфейс можно рассматривать как кортеж из значения и конкретного типа:

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"Под капотом интерфейс" вроде бы не нужна запятая


If `i` does not hold a `T`, the statement will trigger a panic.
Если `i` не типа `T`, оператор вызовет панику.
Copy link

@dmpichugin dmpichugin Mar 19, 2017

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"не имеет типа `T`" пропущен глагол.


Эта инструкция switch проверяет, имеет ли интерфейсное значение `i`
тип `T` или `S`.
В каждом из case `T` и `S`, переменная будет иметь тип `T` or `S` соответственно

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"В каждом из case `T` и `S` переменная `v` будет иметь тип `T` или `S` соответственно и значение, равное значению `i`" вроде бы так немножко понятнее.

A `Stringer` is a type that can describe itself as a string. The `fmt` package
(and many others) look for this interface to print values.
`Stringer` - это тип, который может описать себя как строку. Пакет `fmt` (и многие другие)
ищут этот интерфейс для печати значений.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"ищЕт" вроде бы, т.к. речь идет о пакете fmt.


*Note:* a call to `fmt.Sprint(e)` inside the `Error` method will send the program into an infinite loop. You can avoid this by converting `e` first: `fmt.Sprint(float64(e))`. Why?
*Примечание* вызов `fmt.Sprint(e)` внутри метода `Error` приведет к бесконечному циклу.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"*Примечание*: ..." пропущено двоеточие

@ilya-shikhaleev
Copy link
Author

Поправил

Copy link

@dmpichugin dmpichugin left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нашел еще немного.

@@ -380,8 +379,7 @@ Switch по типу - это как обычная инструкция switch,

Эта инструкция switch проверяет, имеет ли интерфейсное значение `i`
тип `T` или `S`.
В каждом из case `T` и `S`, переменная будет иметь тип `T` or `S` соответственно
и значение, хранящееся в `i`.
В каждом из case `T` и `S` переменная `v` будет иметь тип `T` или `S` соответственно и значение, равное значению `i`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

точку в конце забыли


Эта инструкция switch проверяет, имеет ли интерфейсное значение `i`
тип `T` или `S`.
В каждом из case `T` и `S` переменная `v` будет иметь тип `T` или `S` соответственно и значение, равное значению `i`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

забыли точку в конце


.play methods/methods-funcs.go

* Methods continued
* Методы. Продолжение.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

вроде бы точка в последнем предложении заголовков не ставится.


Методы с приемником-указателем могут изменять значение, на которое указывает
приемник (как здесь делает `Scale`).
Поскольку часто необходимо в методах изменять приемник, более распространен приемник-указатель,
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

В винительном падеже без "а":
http://dicti.info/page/priemnik.php

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Да, вы правы. В голове застрял "преемник".

@rumyantseva
Copy link
Member

Issue #8

@rumyantseva rumyantseva merged commit a296bd0 into golang-ru:master Feb 13, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants