restructred. How to use polymorphism in Go??
merged from master