Files
freeCodeCamp/guide/russian/go/methods/index.md
2018-10-16 21:32:40 +05:30

72 lines
1.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Go Methods
localeTitle: Методы Go
---
## Методы Go
Типы Голанга могут иметь методы. Метод - это функция со специальным аргументом - _приемником_ .
```go
type Rectangle struct {
height, width int64
}
func (r Receiver) getArea() int64 {
return r.height * r.height
}
r := Rectangle{10, 20}
r.getArea() // 200
```
Здесь тип `Rectangle` имеет метод `getArea` который возвращает область прямоугольника. Приемник здесь `r` .
Этот код эквивалентен:
```go
type Rectangle struct {
height, width int64
}
func getArea(r Receiver) int 64{
return r.height * r.height
}
r := Rectangle{10, 20}
getArea(r) // 200
```
Теперь метод getArea получает `r` в качестве аргумента вместо получателя. Функциональность эквивалентна.
### Приемник указателя
Вы можете передать указатель в качестве получателя:
```go
type MyInt int64
func (m *MyInt) setToZero() {
*m = MyInt(0)
}
m := MyInt(10)
m.setToZero() // m == 0
```
### Методы расширения
Если вы хотите создать метод для типа, определенного в другом пакете, например `int` вы можете использовать простую оболочку, например:
```go
type MyInt int64
func (m MyInt) add10() int64 {
return m + 10
}
m := MyInt(10)
m.add10() // 20
```
#### Дополнительная информация:
https://tour.golang.org/methods/1