切換語言為:簡體

為什麼 Go 不像 Rust 那樣做錯誤處理?

  • 爱糖宝
  • 2024-06-19
  • 2064
  • 0
  • 0

Go 錯誤處理,一直是個必爭之地。為什麼不學 Rust 使用 ? 來解決錯誤處理的問題,也是大家非常好奇的地方。

為此 Go 核心團隊成員之一 @Robert Griesemer 給出了官方詮釋和解答。以下為其解答的內容。


Go 的設計非常注重可讀性!

我們希望即使是不熟悉該語言的人也能理解 Go 程式碼(這並不意味著每個名稱都需要不言自明;畢竟我們還有語言規範)。

截止目前為止,我們已經避免了在 Go 語言中引入各種的神秘縮寫或符號,包括不常見的運算子,例如:?,因為這些符號的含義是模糊或不明顯的。

一般來說,語言定義的識別符號要麼是完全拼寫的(例如:package、interface、if、append、recover 等)。要麼是簡寫的(例如:struct、var、func、int、len、imag 等)。當然,簡寫的版本也需要確保明確和易於理解。

而 Rust 引入 ? 是爲了緩解 try 和鏈式語句的問題。而在 Go 中,這個問題要小得多,因為 Go 中的語句往往更簡單,鏈式語句(相對於巢狀)也不常見。

如果 Go 要使用 ? 將需要在語言中引入一個新的字尾運算子。這將需要一個新的標記和新的語法,並需要對大量軟體包(掃描器、解析器等)和工具進行修改和開發。

這也會使 Go 未來的修改變得更加困難。而如果未來錯誤處理使用內建函式來姐姐,則可以消除所有這些問題,同時保持設計的靈活性。

這也是為什麼 Go 將不會學 Rust 使用 ? 來做錯誤處理的原因。

0則評論

您的電子郵件等資訊不會被公開,以下所有項目均必填

OK! You can skip this field.