Method — Go

Method di Go Method adalah fungsi yang "terikat" pada sebuah tipe (biasanya struct). Method dideklarasikan dengan menambahkan receiver sebelum nama fungsi. Sint

Method di Go

Method adalah fungsi yang "terikat" pada sebuah tipe (biasanya struct). Method dideklarasikan dengan menambahkan receiver sebelum nama fungsi.

Sintaks

func (r ReceiverType) NamaMethod() ReturnType {
    // body
}

Contoh: Value Receiver

type Persegi struct {
    Sisi float64
}

func (p Persegi) Luas() float64 {
    return p.Sisi * p.Sisi
}

func (p Persegi) Keliling() float64 {
    return 4 * p.Sisi
}

func main() {
    kotak := Persegi{Sisi: 5}
    fmt.Println("Luas:", kotak.Luas())         // 25
    fmt.Println("Keliling:", kotak.Keliling())  // 20
}

Pointer Receiver

Gunakan pointer receiver jika method perlu mengubah data struct:

func (p *Persegi) Resize(faktor float64) {
    p.Sisi *= faktor
}

kotak := Persegi{Sisi: 5}
kotak.Resize(2)
fmt.Println(kotak.Sisi) // 10

Kapan Value vs Pointer Receiver?

Method pada Tipe Lain

Method bisa ditambahkan ke tipe apapun yang kamu definisikan:

type MyString string

func (s MyString) Teriak() string {
    return strings.ToUpper(string(s)) + "!!!"
}

pesan := MyString("halo")
fmt.Println(pesan.Teriak()) // "HALO!!!"

Yang akan kamu pelajari