// mult_inheritance.go
package main

import "fmt"

type Camera struct { } 

func (c *Camera) TakeAPicture() string { 
    return "Click"
}

type Phone struct { } 

func (p *Phone ) Call() string { 
    return "Ring Ring"
}

// multiple inheritance
type CameraPhone struct {
    Camera 
    Phone  
}

func main() {
    cp := new(CameraPhone)  
    fmt.Println("Our new CameraPhone exhibits multiple behaviors ...")
    fmt.Println("It exhibits behavior of a Camera: ", cp.TakeAPicture())     
	fmt.Println("It works like a Phone too: ", cp.Call()) 
}
/* Output:
Our new CameraPhone exhibits multiple behaviors ...
It exhibits behavior of a Camera:  Click
It works like a Phone too:  Ring Ring
*/