




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第Golang繼承模擬實例詳解本文實例講述了Golang繼承模擬實現方法。分享給大家供大家參考,具體如下:
問題由一個需求引起:
web的controller,希望創建一個基類,然后在子類的controller中定義action方法,基類有一個run函數能根據字符串自動找到子類的action方法。
如何解決呢?--用繼承
示例分析繼承
首先這個需求是很普遍的,由于腦中有繼承概念,所以想當然地以為這個很容易實現:
復制代碼代碼如下:packagemain
import(
"reflect"
)
typeAstruct{
}
func(selfA)Run(){
c:=reflect.ValueOf(self)
method:=c.MethodByName("Test")
println(method.IsValid())
}
typeBstruct{
A
}
func(selfB)Test(sstring){
println("b")
}
funcmain(){
b:=new(B)
b.Run()
}
B繼承A,B中調用Run方法,自然會調用到A的Run方法,然后我根據string“Test”,希望能找到B中(B是子類)的Test方法。
用繼承的觀點看沒錯,實際運行呢?method.IsValid()返回false。很明顯,這里的Test方法是找不到的。
分析問題,首先這里“繼承”兩個詞就用錯了,在go中不應該提及“繼承”這個詞,我更選擇使用“嵌套”這個詞。B是嵌套了A,所以這里的b.Run()實際上是語法糖,調用的是b.A.Run()。這里Run的全部環境都在A中。所以是找不到A的Test的。
感謝@hongqirui和@海意,在它們幫忙下找到了解決方法:
復制代碼代碼如下:packagemain
import(
"reflect"
)
typeAstruct{
Parentinterface{}
}
func(selfA)Run(){
c:=reflect.ValueOf(self.Parent)
method:=c.MethodByName("Test")
println(method.IsValid())
}
typeBstruct{
A
}
func(selfB)Test(sstring){
println("b")
}
func(selfB)Run(){
self.A.Run()
}
funcmain(){
b:=new(B)
b.A.Parent=b
b.Run()
}
在父類中加一個interface{}記錄子類!!這樣問題就迎刃而解了!method.IsValid()返回了true。
結
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國數碼相機行業市場深度調研及發展趨勢與投資戰略研究報告
- 執業醫師考試考后總結經驗試題及答案
- 2025-2030年中國攀爬架行業市場現狀供需分析及投資評估規劃分析研究報告
- 2025-2030年中國撿拾器穩定桿行業市場現狀供需分析及投資評估規劃分析研究報告
- 護理觀察技巧與2025年試題及答案
- 行政管理與中國文化試題及答案
- 學習方法衛生資格考試試題及答案
- 主管護師考試的實務經驗試題及答案
- 綜合包戶服務協議書
- 2025河南鄭州二七區一國企招聘各部門人員9人筆試參考題庫附帶答案詳解
- 鏡頭蓋注塑模具
- 《公主嘗衣貼繡鋪翠襦入宮中》2020年江西省中考文言文閱讀真題(含答案與翻譯)
- 昆蟲標本制作展翅蝴蝶
- 計算機應用技術畢業論文-計算機應用技術論文5000字
- 《學弈》公開課課件完整版
- 手寫通用收款收據word模板
- 2022 CSCO肝癌診療指南
- GB/T 4744-1997紡織織物抗滲水性測定靜水壓試驗
- GB/T 17911-2006耐火材料陶瓷纖維制品試驗方法
- GB/T 14206-2005玻璃纖維增強聚酯波紋板
- 自治區促進就業創業政策課件
評論
0/150
提交評論