Method
Method atau dalam bahasa indonesia berarti metode. Contoh kita memiliki suatu struct bernama Mobil. Metode apa saja yang dapat dilakukan mobil tersebut ? tentunnya sangat banyak diantarannya adalah
- Hill assist control
- Perpindahan gear otomatis
- dan lain sebagainnya
jika menggunakan ilustrasi mobil terlalu komplex maka kita ambil struct yang lebih sederhana yakni Orang (person). Setiap orang (manusia) yang “normal”(mohon maaftidak bermaksut offensive) dapat melakukan hal-hal dibawah ini
- Berjalan
- Melambaikan normal
itulah yang akan kita bahas pada ulasan ini yakni membuat mehtod dalam suatu struct.
Implementasi method
Misal kita memiliki struct “Orang” seperti digambarkan pada kode dibawah ini
package main import ( "fmt" ) func main() { type Orang struct { nama, alamat string umur int } }
lalu kita akan membuat dua buah method dari seorang “Orang” atau manusia yakni
- Method 1 : Berjalan
- Method 2 : Duduk
kedua method tersebut tidak akan kita isikan apa-apa a.k.a kosong karena hanya digunakan untuk mendemokan pembuatan method dari suatu struct. Format pembuatan method adalah
func (input struct dalam bentuk pointer) namamethod() returntype_jika_ada
Berdasarkan format diatas maka kode yang digunakan untuk mengimplementasikan dua method diatas adalah
package main type Orang struct { nama, alamat string umur int } func main() { } func (o *Orang) berjalan() string { return o.nama + "sedang berjalan" } func (o *Orang) duduk() string { return o.nama + "sedang duduk" }
Maka struct Orang saat ini telah memiliki dua buah method yakni berjalan dan duduk. Method berjalan akan mereturn suatu string yakni nama orang tersebut + sedang berjalan begitu pula sebaliknya dengan method duduk.
Menggunakan method
Setelah kita membuat method untuk suatu struct maka selanjutnya adalah menggunakan method tersebut dalam instances tertentu. Cara menggunakannya adalah dengan “.” dot. Formatnya adalah
namaInstances.namaMethod()
Berdasarkan format diatas maka cara memanggil method dari suatu struct pada golang adalah sebagai berikut ini
package main import ( "fmt" ) type Orang struct { nama, alamat string umur int } func main() { dega := Orang{"degananda", "jl xxx", 17} fmt.Println(dega.berjalan()) fmt.Println(dega.duduk()) } func (o *Orang) berjalan() string { return o.nama + " sedang berjalan" } func (o *Orang) duduk() string { return o.nama + " sedang duduk" }
cara memanggilnya cukup dengan namaInstances pada kasus diatas adalah instances dega lalu tambahkan dengan . nama metod misalnya berjalan() atau duduk(). Kode diatas jika dieksekusi akan menghasilkan tampilan pada konsol
Embedded type
Embed artinnya dalam bahasa indonesia adalah menanamkan. Contohnya kita memiliki struct Orang dan struct Kelompok. Kita dapat kaitkan struct orang dalam struct kelompok. Kelompok biasannya memiliki pemimpin atau leader. Kita akan mengaitkan attribut pemimpin dalam struct kelompok dengan struct orang yang berarti pemimpin bertipe struct orang.
Jika penjelasan diatas dirasa membingunkan perhatikan kode dibawah ini yang menggambarkan proses embed antara struct kelompok dan struct orang.
package main import ( "fmt" ) type Orang struct { nama, alamat string umur int } type Kelompok struct { ketuaKelompok Orang nama string } func main() { dega := Orang{"degananda", "jl xxx", 17} // instances kelompok kelompokBermain := Kelompok{dega, "Kelompok bermain"} fmt.Println(kelompokBermain) } func (o *Orang) berjalan() string { return o.nama + " sedang berjalan" } func (o *Orang) duduk() string { return o.nama + " sedang duduk" }
ketika kode diatas dijalankan maka dapat kita lihat instances “dega” akan masuk atau embedded ke instances kelompokbermain yang merupakan struct Kelompok.
Memanggil method embedded struct
Karena orang telah diembed pada kelompok maka secara otomatis kita dapat memanggil method berjalan ataupun duduk dari kelompok. Perhatikan kode dibawah ini
package main import ( "fmt" ) type Orang struct { nama, alamat string umur int } type Kelompok struct { ketuaKelompok Orang nama string } func main() { dega := Orang{"degananda", "jl xxx", 17} // instances kelompok kelompokBermain := Kelompok{dega, "Kelompok bermain"} fmt.Println(kelompokBermain.ketuaKelompok.berjalan()) } func (o *Orang) berjalan() string { return o.nama + " sedang berjalan" } func (o *Orang) duduk() string { return o.nama + " sedang duduk" }