Menu
Coddy logo textTech

Definiowanie metod dla struktur

Część sekcji Programowanie obiektowe ścieżki GO w Coddy. Lekcja 7 z 107.

Metody w Go to funkcje ze specjalnym argumentem odbiorcy, który wiąże funkcję z typem struktury.

Składnia metody

func (receiverName StructType) MethodName() ReturnType {
    // ciało metody
}

Zdefiniuj strukturę z metodami

type Rectangle struct {
    Width  float64
    Height float64
}

func (r Rectangle) Area() float64 {
    return r.Width * r.Height
}

func (r Rectangle) Perimeter() float64 {
    return 2 * (r.Width + r.Height)
}

Metody z parametrami

func (r Rectangle) Scale(factor float64) float64 {
    return r.Area() * factor
}

Wywoływanie metod

rect := Rectangle{Width: 5, Height: 3}
fmt.Println(rect.Area())      // Wynik: 15
fmt.Println(rect.Perimeter()) // Wynik: 16
fmt.Println(rect.Scale(2))    // Wynik: 30

Odbiornik (r Rectangle) umożliwia dostęp do pól struktury wewnątrz metody za pomocą zmiennej odbiornika r. Metody mogą wywoływać inne metody tej samej struktury.

challenge icon

Wyzwanie

Średni

Dodaj trzy metody do struktury Circle:

  • Area: zwraca math.Pi * radius * radius
  • Circumference: zwraca 2 * math.Pi * radius
  • Describe: zwraca ciąg znaków: "Circle with radius X.XX"

Spróbuj swoich sił

package main

import "fmt"

func main() {
    var radius float64
    fmt.Scan(&radius)

    c := Circle{Radius: radius}

    fmt.Printf("Area: %.2f\n", c.Area())
    fmt.Printf("Circumference: %.2f\n", c.Circumference())
    fmt.Printf("Description: %s\n", c.Describe())
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Programowanie obiektowe

Poćwicz samodzielnie: Kompilator Go online