2025 年的文章
struct tag 與 reflect
struct tag 靠 reflect 在執行期讀,Lookup 分得出空值與沒掛的 tag,reflect 會 panic 又慢,只在啟動期用,別進 hot path,這是宣告式路由的地基。
抽象層級的紀律,每層清楚的做一件事情
每層只負責一件講得清楚的事,責任模糊時 debug 就得跨層猜。談抽象不足、過度抽象,以及沒有第二個 caller 就別先抽介面。
錯誤訊息是寫給下一個人看的
好的 error message 要交代發生什麼、在哪個邊界出錯、下一步往哪查,log、metrics、trace 各補一塊,寫給凌晨兩點半被 call 起來的下一個人。
net/http 與 middleware 模式
每個 Go web 框架都長在 net/http 上,http.Handler 與 ServeHTTP 是唯一的抽象,middleware 就是包一層 Handler 的閉包,外層先跑。