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