再不寫點東西,這邊就長草了
這幾天在看go-redis
專案,顧名思義就是在golang當中對redis操作的程式庫
其中有一段程式碼是這樣
1 | func ExampleClient() { |
結果去redis.go
裡面查看,找不到Set
這個函數的實作
只好用grep去找哪邊可能實作這個函數
最後讓我在command.go
找到
1 | func (c *cmdable) Set(key string, value interface{}, expiration time.Duration) *StatusCmd { |
在同一個檔案中找到cmdable
的定義
1 | type cmdable struct { |
回頭看我們的redis.go
,發現一樣的東西
1 | type baseClient struct { |
因為有同樣的Singature,所以可以把baseClient
當cmder`來用
所以?
雖然找到了我想要的答案,不過我不喜歡這方法
由於我找不到Set這函數,於是我需要grep找到可能的實作 => 發現baseClient和cmadble的相似處
那為什麼不直接用繼承關係就好了,這樣可以找到相依性
1 | struct ICmdable { |
這樣可以看出baseClient
必須繼承’ICmdable’這個介面
不過可能引申出多重繼承的問題,老話一句,沒有什麼方法一體適用