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().
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.