Closed joremysh closed 3 years ago
問一下,有對應的截圖嗎?
Merging #254 (550963b) into development (0371cfc) will not change coverage. The diff coverage is
n/a
.
@@ Coverage Diff @@
## development #254 +/- ##
============================================
Coverage 45.49% 45.49%
============================================
Files 29 29
Lines 1622 1622
============================================
Hits 738 738
Misses 782 782
Partials 102 102
Continue to review full report at Codecov.
Legend - Click here to learn more
Δ = absolute <relative> (impact)
,ø = not affected
,? = missing data
Powered by Codecov. Last update 0371cfc...550963b. Read the comment docs.
我們公司用 go 開發的專案 response body 都會寫一個 struct 包起來,這樣可以重複使用,程式碼也比較容易閱讀。請問 @PichuChen 爲什麼 Ptt-backend 裡面很多都用 map 來寫呢?
我們公司用 go 開發的專案 response body 都會寫一個 struct 包起來,這樣可以重複使用,程式碼也比較容易閱讀。請問 @PichuChen 爲什麼 Ptt-backend 裡面很多都用 map 來寫呢?
其實包不包都可以,用 struct 的話那就是
type Foo struct {
UserID string `json:user_id`
XXX interface{} `json:xxx`
}
f := &Foo{}
data, _ := json.Marshal(&f)
這樣的感覺
然後用map的話,就是
data, _ := json.Marshal(&map[string]interface{}{
"user_id": xxx
"xxx": xxx
})
感覺起來就是後面比較短,然後也比較明確知道有回傳什麼這樣,不過要改成上面第一種方法也不是不行,沒有特別說為什麼要用下面這種就是了。
目前我遇到的問題是要確認幾個 api response 的結構是不是一樣的時候,需要一個一個比對參數的 key 不太方便。
以後如果有需要修改參數的話,就會需要去找有哪些地方有用到,然後一個一個改。要增加新的 api 的時候也可能會有人不小心把 key 打錯。全部都用 interface 的話也會讓人搞不清楚應該放什麼類型。
了解,所以是不同的API但是回應類型一樣的時候。
這個搞不好可以開ISSUE把這些map改成一樣的回傳格式。
有重複使用到的 string 也可以加個 constant 統一使用一樣的,例如 user_id
、error
、permission_error
等。
應該該可以先求有再求好,避免一次戰線開太多關不起來
error 的部分先前有討論過重新設計,還沒設計
👏 解決掉的 issue / Resolved Issues
📝 相關的 issue / Related Issues
145
⛏ 變更內容 / Details of Changes