Study
Go

Method & Receiver di Go

Penjelasan

Go tidak punya class, tapi bisa menambahkan method ke struct lewat receiver — parameter khusus yang ditulis di antara keyword func dan nama method, menunjukkan struct mana yang "memiliki" method itu. Receiver bisa berupa value (menerima salinan struct, perubahan di dalam method tidak memengaruhi struct aslinya) atau pointer (menerima alamat struct, perubahan ikut memengaruhi struct aslinya).

Contoh Konsep

package main

import "fmt"

type Mobil struct {
	Warna string
}

func (m Mobil) Jalan() string { // value receiver
	return "Mobil " + m.Warna + " sedang jalan."
}

func (m *Mobil) GantiWarna(warnaBaru string) { // pointer receiver, bisa mengubah aslinya
	m.Warna = warnaBaru
}

func main() {
	mobilku := Mobil{Warna: "merah"}
	fmt.Println(mobilku.Jalan())

	mobilku.GantiWarna("biru")
	fmt.Println(mobilku.Warna) // biru, ikut berubah
}

Praktikum

Buat struct Buku dengan field Judul dan Penulis. Buat method Info() dengan value receiver yang mengembalikan string "{Judul} oleh {Penulis}". Buat satu struct Buku di main() dan tampilkan hasil Info().

Editor Latihan

Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.

Tips

Pakai pointer receiver (*NamaStruct) kalau method-mu perlu MENGUBAH field struct aslinya, dan value receiver kalau cukup MEMBACA saja — sebagai aturan praktis, kalau salah satu method sebuah struct butuh pointer receiver, sebaiknya semua method struct itu konsisten pakai pointer receiver juga.