Ме

Методи у Go

3 вправи

Про концепцію Методи

Метод - це функція з особливим аргументом отримувачем. Отримувач стоїть у власному списку аргументів між ключовим словом func і назвою методу.

func (receiver type) MethodName(parameters) (returnTypes) {

}

Метод можна визначити лише з отримувачем, тип якого визначено в тому самому пакеті, що й метод.

type Person struct {
	Name string
}

func (p Person) Greetings() string {
	return fmt.Sprintf("Welcome %s!", p.Name)
}

s := Person{Name: "Bronson"}
fmt.Println(s.Greetings())
// Output: Welcome Bronson!

Отримувачі бувають двох типів: отримувачі-значення та отримувачі-вказівники.

Методи з отримувачем-значенням працюють із копією переданого значення, тож будь-які зміни, які метод робить з отримувачем, не видно коду, що викликав метод.

Метод можна оголосити з отримувачем-вказівником, щоб змінювати значення, на яке вказує отримувач. Такі зміни так само видно коду, що викликав метод.

type rect struct {
	width, height int
}

func (r *rect) squareIt() {
	r.height = r.width
}

r := rect{width: 10, height: 20}
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 20

r.squareIt()
fmt.Printf("Width: %d, Height: %d\n", r.width, r.height)
// Output: Width: 10, Height: 10

Кілька прикладів можна знайти тут. Також варто поглянути на цей короткий туторіал про методи.

Памʼятаймо: метод - це просто функція з аргументом-отримувачем.

Редагувати через GitHub Посилання відкривається в новому вікні або вкладці

Вивчити концепцію Методи

Практика заблокована

Розблокуйте ще 2 вправи, щоб практикувати концепцію Методи