GO_INTERVIEW_LIB Telegram 455
💬 Что из себя представляют методы в 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, который возвращает количество элементов в массиве.
👍16🥱71



tgoop.com/go_interview_lib/455
Create:
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

View MORE
Open in Telegram


Telegram News

Date: |

Other crimes that the SUCK Channel incited under Ng’s watch included using corrosive chemicals to make explosives and causing grievous bodily harm with intent. The court also found Ng responsible for calling on people to assist protesters who clashed violently with police at several universities in November 2019. Over 33,000 people sent out over 1,000 doxxing messages in the group. Although the administrators tried to delete all of the messages, the posting speed was far too much for them to keep up. A Hong Kong protester with a petrol bomb. File photo: Dylan Hollingsworth/HKFP. A vandalised bank during the 2019 protest. File photo: May James/HKFP. A new window will come up. Enter your channel name and bio. (See the character limits above.) Click “Create.”
from us


Telegram Библиотека Go для собеса | вопросы с собеседований
FROM American