tgoop.com/go_interview_lib/455
Create:
Last Update:
Last Update:
💬 Что из себя представляют методы в Go?
Методы в Go — это функции, прикрепленные к типам, включая структуры. Синтаксис объявления метода похож на синтаксис объявления функции, за исключением дополнительного аргумента ресивера перед именем функции, указывающего на тип, к которому прикрепляется метод. В вызове метода экземпляр типа будет доступен по имени аргумента ресивера.
Возьмем для примера тип Vertex
и добавим к нему метод Square
, указав ресивер с именем v
и типом *Vertex
:
package main
import "fmt"
type Vertex struct {
X, Y int
}
func (v *Vertex) Square() { метод к типу *Vertex
v.X *= v.X
v.Y *= v.Y
}
func main() {
vert := &Vertex{3, 4}
fmt.Println(vert) // &{3 4}
vert.Square()
fmt.Println(vert) // &{9 16}
}
Метод
Square
изменяет значения полей X
и Y
структуры Vertex
на их квадраты. Вызов vert.Square()
изменяет vert
на &{9 16}
.Помимо структур можно также создавать свои версии стандартных составных типов — структур, срезов или ассоциативных массивов — и присоединять к ним свои методы. Например, объявим новый тип
MyMap
, версию стандартного ассоциативного массива map[string]int
, и присоединим к нему метод Length
:
package main
import "fmt"
type MyMap map[string]int
func (m MyMap) Length() int {
return len(m)
}
func main() {
mm := MyMap{"A": 1, "B": 2}
fmt.Println(mm) // map[A:1 B:2]
fmt.Println(mm["A"]) // 1
fmt.Println(mm.Length()) // 2
}
Результатом является новый тип
MyMap
, отображающий строки в целые числа подобно map[string]int
, но имеющий дополнительный метод Length
, который возвращает количество элементов в массиве.BY Библиотека Go для собеса | вопросы с собеседований
Share with your friend now:
tgoop.com/go_interview_lib/455