Interface {19/100}
Interface dan struct hampir memiliki persamaan, bedanya adalah interface adalah kumpulan dari method yang di bungkus dengan nama tertentu.
Cara pendeklarasian interface juga menggunakan keyword type, dengan tambahan interface setelah nama interface-nya
type geometri interface {
luas() float64
keliling() float64
}Dari contoh diatas kita mendeklarasikan interface geometri yang memiliki method luas dan keliling dengan tipe yang sama yaitu float64.
Berikut merupakan contoh penerapan interface dalam menghitung luas dan keliling sebuah persegi panjang dan lingkaran
package main
import (
"fmt"
"math"
)
type geometri interface {
luas() float64
keliling() float64
}type persegiPanjang struct {
panjang float64
lebar float64
}type lingkaran struct {
jariJari float64
}func (p persegiPanjang) luas() float64 {
return p.panjang * p.lebar
}func (p persegiPanjang) keliling() float64 {
return 2 * p.panjang + 2 * p.lebar
}func (l lingkaran) luas() float64 {
return math.Pi * l.jariJari * l.jariJari
}func (l lingkaran) keliling() float64 {
return 2 * math.Pi * l.jariJari
}func hitung(g geometri) {
fmt.Println(g)
fmt.Println(g.luas())
fmt.Println(g.keliling())
}func main() {
p := persegiPanjang{panjang: 12, lebar: 14}
l := lingkaran{jariJari: 22}hitung(p)
hitung(l)
}