Sypnosis
【Go】利用 struct 優化(一)後,可以得知
- 使用 struct 讓物件統一,更容易理解
- 使用 pointer 來提高 memory 的使用效率
- 使用 func as method 讓程式碼更容易被閱讀
以下為相關程式碼
接下來的問題是
- 兩邊都有相同的 method, read(), 如何建立一個統一的接口, 再執行某 func, for ex:
db read
: 不同的 db 都會有 read 的 methodsign in
: 不同的登入方法, 但可能是 jwt, facebook, email 等notification
: 不同的 notification 進行設計 (ios,android,aws,極光…)
- 接續 1, 在實踐上, 再把 func 變成 method, 讓可讀性變高
1. 發現兩者都有 area() 的 method
- 在程式中, 我們可以用 interface{} 來將兩者的 method 包在一起, 以方便一起處理某些事情
- 範例程式碼
1-1 定義 interface
- 在 struct 中, 定義 fields
- 在 interface 中, 定義
method set
.
1 |
|
- 定義好 interface, 接下來就是透過 func 來實踐『特定功能』, 這邊舉一個簡單的例子
showArea()
- 其他例子的使用,例如 : 發送 notification 後,驗證錯誤訊息
- 在 func 中使用 interfcae type 當作參數送給 function
1 |
|
1-2 範例程式碼
2. 將 func 定義成 method
- 定義一個新的類型
type MultiShape struct{}
, 負責存放所有的 shapes - 將 func -> method
- 範例程式碼
2-1 定義 MultiShape
1 |
|
2-2 接下來將 func 改成 method, 並宣告物件 m
1 |
|
2-3 範例程式碼
額外添加添加 name()
延伸問題
- 如何添加周長?