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