Konteks tulisan ini bisa dilihat di page sebelumnya:
Tulisan ini ditujukan untuk koder JavaScript, TypeScript, atau Java.
Beliau-beliau ini, biasanya sudah mempunyai "mental-model"-nya sendiri tentang bagaimana caranya membuat program menggunakan class
,property
, dan method
-nya.
Untuk penyegaran dan pembanding, mari kita ingat-ingat dulu penerapan penggunaan method di JavaScript.
Mari kita buat sebuah class bernama People
yang mempunyai 2 method: getName()
dan getAge()
.
Misalnya seperti ini:
class People {
contructor(name, age) {
this.name = name;
this.age = age;
}
getName() {
return this.name;
}
getAge() {
return this.age;
}
}
Cara menggunakannya gampang: buat instance class-nya dulu, baru panggil nama method-nya.
Contoh:
const people = new People("Pram", 4);
const name = people.getName();
const age = people.getAge();
Yang jadi pertanyaan:
- Apakah di golang bisa seperti itu?
Berita menyedihkan untuk para programmer JavaScript: di golang tidak ada class
seperti di JS.
Lantas, bagaimana cara membuat method pada sebuah obyek?
Berita gembiranya, sebagai pengganti class
, Golang menyediakan cara yang cukup simple dan mudah dipahami: struct
Perhatikan contoh berikut:
type People struct {
Name string
Age int
}
func (p People) getName() string {
return p.Name
}
func (p People) getAge() string {
return p.age
}
Cara menggunakannya:
people := People{"Pram",4}
name := people.getName()
age := people.getAge()
Tapi ternyata tidak hanya itu, method
ala class ini ternyata bisa digunakan untuk type data yang bukan struct
.
Perhatikan contoh berikut:
type Age float64
func (age Age) getAge() float64 {
return float64(age)
}
Cara menggunakannya:
age := Age(4)
result := age.getAge()