Selalu ingin mencoba hal - hal yang baru meski penuh resiko dan tantangan yang sulit. "Kain kafan tidak berkantung".

Golang tutorial indonesia – Method & embbeded types

0
Degananda.com -

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

  1. Hill assist control
  2. Perpindahan gear otomatis
  3. 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

  1. Berjalan
  2. 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

  1. Method 1 : Berjalan
  2. 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"
}