正在讀 Golang 的 net/http 原始碼,發現 Golang 標準庫中常常看到一個寫法,例如
這個寫法看起來很多餘,問 ChatGPT 他說方便測試、提昇封裝性之類的理由,但是都沒有說服我。直到我看到了這段,在 roundtrip.go 中
RoundTrip 呼叫了 roundTrip,有趣的是這個檔案有個編譯器設定
這個只在非 wasm 環境使用,當編譯目標是 wasm 時,就會去另一個檔案 roundtrip_js.go 用另一個函式。
看到這裡我才知道,一個 public function 什麼都不做只呼叫一個 private function 的用意是編譯時可以用不同檔案,而且不破壞函數呼叫的形式。
func (c *Client) Do (req *Request) (Response, error) {
return c.do(req)
}
unc (c *Client) Do (req *Request) (Response, error) {
// do something here......
}
這個寫法看起來很多餘,問 ChatGPT 他說方便測試、提昇封裝性之類的理由,但是都沒有說服我。直到我看到了這段,在 roundtrip.go 中
func (t *Transport) RoundTrip(req *Request) (*Response, error) {
return t.roundTrip(req)
}
RoundTrip 呼叫了 roundTrip,有趣的是這個檔案有個編譯器設定
//go:build !js
這個只在非 wasm 環境使用,當編譯目標是 wasm 時,就會去另一個檔案 roundtrip_js.go 用另一個函式。
看到這裡我才知道,一個 public function 什麼都不做只呼叫一個 private function 的用意是編譯時可以用不同檔案,而且不破壞函數呼叫的形式。