go物件導向方法的呼叫
go物件導向方法的呼叫
在物件導向三大特徵(封裝、繼承和多型)裡面,go語言只有封裝這個功能。但可以使用匿名欄位包含,間接實現繼承。
type Resouce struct {
_ uint8
id int
}
type User struct {
Resouce //匿名欄位,User間接繼承自Resource
name string
}
// 接收者型別為 User 時,可訪問方法集全部為 User 的方法,簡稱 T 方法
// 接收者型別型別 *User 時,可訪問方法集為 User 和 *User 的方法,簡稱 T + *T 方法。
// 接收者型別型別 Manager 包含匿名欄位 User,則 Manager 方法集包含 User 方法。
// 接收者型別型別 Manager 包含匿名欄位 *User,則 Manager 方法集包含 T + *T 方法。
// 不管嵌入 User 或 *User,*Manager 方法集總是包含 T + *T 方法。
func (self *User) ToString() string {
return fmt.Sprintf("User = %p, %v", self, self)
}
func (self User) TestValue() {//User拷貝
fmt.Printf("TestValue: %p, %v\n", &self, self)
}
type Manager struct {
User//匿名欄位
title string
}
func (self *Manager) ToString() string {
return fmt.Sprintf("Manager = %p, %v", self, self)
}
func main() {
m := Manager{User{Resouce{id:1}, "jorn"}, "zhang"}
fmt.Println(m.ToString())
fmt.Println(m.User.ToString()) //通過匿名欄位,獲得和繼承類似的利用能力
//呼叫方法一:instance.method(args...)
mInstance := m.ToString()
m.name = "huangbin"
fmt.Println(mInstance)
fmt.Println(m.ToString())
//呼叫方法二:<type>.func(instance, args...)
mFunc := (*User).ToString
fmt.Println(mFunc(&m.User))
mFunc2 := (User).TestValue
mFunc2(m.User)
}
相關文章
- GO 語言中的物件導向Go物件
- Perl的物件導向方法物件
- Go 筆記之物件導向Go筆記物件
- Go 是物件導向的語言嗎?Go物件
- day08 Go中的物件導向Go物件
- [Java物件導向]static方法Java物件
- 物件導向-物件導向思想物件
- 1 物件導向的開發方法物件
- 聊聊 Go 語言中的物件導向程式設計Go物件程式設計
- Go物件導向程式設計OOP的實現Go物件程式設計OOP
- php 物件導向中的魔術方法PHP物件
- 跟著老貓來搞GO,"物件導向"Go物件
- go物件導向思想:封裝、繼承、多肽Go物件封裝繼承
- 兄弟連go教程(19)資料 - ⾯物件導向Go物件
- PHP 物件導向 (五)靜態方法PHP物件
- PHP 物件導向 (六)魔術方法PHP物件
- SOLID Go Design - Go語言物件導向設計SolidGo物件
- SOLID Go Design - Go 語言物件導向設計SolidGo物件
- 程式導向與物件導向物件
- 物件導向與程式導向物件
- “程序導向”和“物件導向”物件
- 請教:關於物件導向的分析方法物件
- 從物件導向到模式再到真正的物件導向 (轉)物件模式
- 物件導向物件
- java的物件導向Java物件
- JavaScript的物件導向JavaScript物件
- php中的程式導向與物件導向PHP物件
- 物件導向的軟體工程方法的優勢物件軟體工程
- javascript物件導向的方法過載的實現JavaScript物件
- 物件導向,搞定物件物件
- PHP 物件導向 (九)物件導向三大特徵PHP物件特徵
- JAVA物件導向基礎--物件導向介紹Java物件
- Go 語言極速入門4 - 物件導向Go物件
- Go 面試官問我如何實現物件導向?Go面試物件
- 從程式導向到物件導向物件
- 全網最適合入門的物件導向程式設計教程:00 物件導向設計方法導論物件程式設計
- 物件導向(下)物件
- 物件導向 -- 反射物件反射