no-struct
package main
import "fmt"
type MyInt int
func (i MyInt) Double() int{
    // integerにキャストする
    return int(i * 2)
}
func main() {
    myInt := MyInt(10)
    fmt.Println(myInt.Double())
}
20
インターフェース
package main
import "fmt"
type Human interface {
    Say() string
}
type Person struct{
    Name string
}
func (p *Person) Say() string{
    p.Name = "Mr." + p.Name
    fmt.Println(p.Name)
    return p.Name
}
// Humanインターフェースを受け付ける
func DriveCar(human Human){
    if human.Say() == "Mr.Mike" {
        fmt.Println("Run")
    }else{
        fmt.Println("Get Out")
    }
}
func main(){
    var mike Human = &Person{"Mike"}
    var x Human = &Person{"X"}
    DriveCar(mike)
    DriveCar(x)
}
Mr.Mike
Run
Mr.X
Get Out
