freeCodeCamp/guide/russian/go/methods/index.md

72 lines
1.7 KiB
Markdown
Raw Normal View History

2018-10-12 20:00:59 +00:00
---
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