Interface adalah custom type berupa kumpulan dari 1 atau lebih method signatures. Interface adalah abstract, tidak dapat membuat instance dari interface.
Untuk lebih jelas, mari kita gunakan contoh membuat interface geometry untuk menghitung luas dan keliling.
type geometry interface {
luas() float64
keliling() float64
}
Interface diatas akan digunakan untuk menghitung luas dan keliling persegi panjang dan lingkaran.
Pertama, Kita buat struct rect dan circle untuk menyimpan data yang dibutuhkan.
type rect struct {
panjang, lebar float64
}
type circle struct {
radius float64
}
Implementasi interface untuk menghitung luas dan keliling dari persegi panjang dan lingkaran
func (r rect) luas() float64 {
return r.panjang * r.lebar
}
func (r rect) keliling() float64 {
return 2*r.panjang + 2*r.lebar
}
func (c circle) luas() float64 {
return math.Pi * c.radius * c.radius
}
func (c circle) keliling() float64 {
return 2 * math.Pi * c.radius
}
Kita buat fungsi generic measure() dengan menggunakan interface.
func measure(g geometry) {
fmt.Println(g)
fmt.Println(g.luas())
fmt.Println(g.keliling())
}
Dengan menggunakan interface, kita bisa menghitung persegi panjang dan lingkaran dengan menggunakan 1 fungsi generic measure().
r := rect{panjang: 4, lebar: 2}
c := circle{radius: 5}
measure(r)
measure(c)
package main
import (
"fmt"
"math"
)
type geometry interface {
luas() float64
keliling() float64
}
type rect struct {
panjang, lebar float64
}
type circle struct {
radius float64
}
func (r rect) luas() float64 {
return r.panjang * r.lebar
}
func (r rect) keliling() float64 {
return 2*r.panjang + 2*r.lebar
}
func (c circle) luas() float64 {
return math.Pi * c.radius * c.radius
}
func (c circle) keliling() float64 {
return 2 * math.Pi * c.radius
}
func measure(g geometry) {
fmt.Println(g)
fmt.Println(g.luas())
fmt.Println(g.keliling())
}
func main() {
r := rect{panjang: 4, lebar: 2}
c := circle{radius: 5}
fmt.Println("Persegi Panjang")
measure(r)
fmt.Println("")
fmt.Println("Lingkaran")
measure(c)
}
Persegi Panjang
{4 2}
8
12
Lingkaran
{5}
78.53981633974483
31.41592653589793
Dekat berakhirnya modul ini, tutorial Golang Dasar sudah selesai. Semoga bermanfaat.