package main
import (
"fmt"
)
//
// Inteface
//
type X interface {
Print()
}
//
// Impl A
//
type A struct {
}
func (a *A) Print() {
fmt.Println(a.Get())
}
func (a *A) Get() string {
return "A"
}
//
// Impl B
//
type B struct {
*A
}
func (b *B) Get() string {
return "B"
}
//
// Main
//
func main() {
x := &B{A: &A{}}
x.Print()
}
package main
import (
"fmt"
)
//
// Inteface
//
type Gettable interface {
Get() string
}
//
// Impl A
//
type A struct {
}
func (a *A) Get() string {
return "A"
}
//
// Impl B
//
type B struct {
}
func (b *B) Get() string {
return "B"
}
//
// Main
//
func main() {
a := A{}
b := B{}
PrintSomeStuff(&a)
PrintSomeStuff(&b)
}
func PrintSomeStuff(obj Gettable) {
fmt.Println(obj.Get())
}