1.7 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			1.7 KiB
		
	
	
	
	
	
	
	
title, localeTitle
| title | localeTitle | 
|---|---|
| Go Methods | Методы 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 .
Этот код эквивалентен:
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 в качестве аргумента вместо получателя. Функциональность эквивалентна.
Приемник указателя
Вы можете передать указатель в качестве получателя:
type MyInt int64 
 
 func (m *MyInt) setToZero() { 
  *m = MyInt(0) 
 } 
 
 m := MyInt(10) 
 m.setToZero() // m == 0 
Методы расширения
Если вы хотите создать метод для типа, определенного в другом пакете, например int вы можете использовать простую оболочку, например:
type MyInt int64 
 
 func (m MyInt) add10() int64 { 
  return m + 10 
 } 
 
 m := MyInt(10) 
 m.add10() // 20