Study
Go

Interface di Go

Penjelasan

Interface di Go mendefinisikan kumpulan method yang harus dimiliki suatu tipe data, TAPI berbeda dari Java/C#, Go tidak punya keyword implements — sebuah struct otomatis dianggap "mengimplementasikan" interface begitu ia punya semua method yang dibutuhkan interface itu (disebut implementasi implisit/structural typing). Ini membuat interface di Go sangat fleksibel.

Contoh Konsep

package main

import "fmt"

type Bentuk interface {
	HitungLuas() float64
}

type Lingkaran struct {
	JariJari float64
}

func (l Lingkaran) HitungLuas() float64 { // otomatis implement Bentuk
	return 3.14 * l.JariJari * l.JariJari
}

func tampilkanLuas(b Bentuk) {
	fmt.Println(b.HitungLuas())
}

func main() {
	lingkaranku := Lingkaran{JariJari: 7}
	tampilkanLuas(lingkaranku) // Lingkaran otomatis diterima sebagai Bentuk
}

Praktikum

Buat interface Hewan dengan method Bersuara() string. Buat struct Kucing dengan method Bersuara() yang mengembalikan "Meong" (otomatis implement Hewan tanpa keyword khusus). Buat object Kucing di main() dan tampilkan hasil Bersuara().

Editor Latihan

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

Tips

Karena implementasinya implisit, satu struct bisa "memenuhi" banyak interface berbeda sekaligus tanpa deklarasi tambahan apa pun — cukup pastikan struct itu punya semua method yang dibutuhkan tiap interface.