package main

import "fmt"

type Mesin struct {
	DayaHP int
}

func (m Mesin) Spesifikasi() string {
	return fmt.Sprintf("daya %d HP", m.DayaHP)
}

type Hewan struct {
	Nama string
}

func (h Hewan) Suara() string {
	return "..."
}

func (h Hewan) Berbicara() string {
	return h.Nama + " berbunyi " + h.Suara()
}

type Mobil struct {
	Mesin
	Merek string
}

type Kucing struct {
	Hewan
}

func (k Kucing) Suara() string {
	return "meong"
}

func main() {
	mobil := Mobil{
		Mesin: Mesin{DayaHP: 120},
		Merek: "Kancil",
	}
	fmt.Println(mobil.Merek, ":", mobil.Spesifikasi())
	fmt.Println("daya mesin:", mobil.DayaHP)

	kucing := Kucing{Hewan: Hewan{Nama: "Oyen"}}
	fmt.Println(kucing.Suara())
	fmt.Println(kucing.Berbicara())
	fmt.Println(kucing.Hewan.Suara())
}
