27 lines
504 B
Go
27 lines
504 B
Go
import reflect
|
|
|
|
type happinessTester interface {
|
|
happy() bool
|
|
}
|
|
|
|
type bottleOfWine struct {
|
|
USD float64
|
|
empty bool
|
|
}
|
|
|
|
func (b *bottleOfWine) happy() bool {
|
|
return b.USD > 10 && !b.empty
|
|
}
|
|
|
|
func main() {
|
|
partySupplies := []happinessTester{
|
|
&picnicBasket{2, true},
|
|
&bottleOfWine{USD: 6},
|
|
}
|
|
for _, ps := range partySupplies {
|
|
fmt.Printf("%s: happy? %t\n",
|
|
reflect.Indirect(reflect.ValueOf(ps)).Type().Name(),
|
|
ps.happy())
|
|
}
|
|
}
|