Go interface 接口的概念及實例

golanginterface並不像其餘高級語言在類定義時添加限定做用,而是經過向上轉型的方式,在業務代碼的上下文中判斷結構體(類)是否實現了接口裏聲明的方法。golang

type interfact Person {
    SetName(name string)
    GetName() string
    SetAge(age int)
    GetAge() int
}
type Boy struct {
    Name string
    Age int
}

func (boy *Boy) SetName(name string) {
    boy.Name = name
}

func (boy *Boy) GetName() string {
    return boy.Name
}

func (boy *Boy) SetAge(age int) {
    boy.Age = age
}

func (boy *Boy) GetAge() int{
    return boy.age
}
func main() {
    // 注意這裏 boy 的類型是 Person
    var boy Person
    // 若是 Boy 對象沒有徹底實現 Person 的方法 此處向上轉型會報錯
    // 並且一旦經過接口限定 golang 不會幫你把變量隱式轉爲指針
    // 因此這裏必需要加 & 或者用 new
    boy = &Boy{"big_cat", 29}
    boy.SetName("sqrt_cat")
    boy.setAge(18)
    fmt.Println(boy.GetName(), boy.GetAge())
}
相關文章
相關標籤/搜索