Golang interface adalah 2 hal, deretan method dan juga type data. Mari kita lihat bagaimana sebuah interface didefinisikan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package main import "fmt" const PI = 3.14 type BangunDatar interface { Luas() float32 Keliling() float32 } type Circle struct { r float32 } func (c Circle) Luas() float32 { return c.r * c.r * PI } func (c Circle) Keliling() float32 { return 2 * c.r * PI } type Rectangle struct { w, h float32 } func (r Rectangle) Luas() float32 { return r.w * r.h } func (r Rectangle) Keliling() float32 { return 2 * (r.w + r.h) } func main() { c := Circle{10} r := Rectangle{10, 20} bd := []BangunDatar{c, r} for _, v := range bd { fmt.Println("luas : ", v.Luas(), ", keliling :", v.Keliling()) } } |
1 2 |
luas : 314 , keliling : 62.800003 luas : 200 , keliling : 60 |