goレシーバとインタフェースのサンプル

package main

import (
    "fmt"
)

type Persona interface {
    run()
    stop()
}

type User struct {
    name   string
    height int
    gender string
}

func (u *User) run() {
    defer fmt.Printf("%s\r\n", u.name)
    fmt.Printf("%d\r\n", u.height)
}

func (u *User) stop() {
    u.height = 181
    u.name = "徳川"
}

func main() {
    u := &User{name: "豊臣", height: 180, gender: "男"}
    var pr Persona = u
    pr.run()
    pr.stop()
    pr.run()

}