歡迎您光臨本站 註冊首頁

Go 語言團隊否決關於"try"語句的提案

←手機掃碼閱讀     admin @ 2019-07-20 , reply:0

Go 語言作者之一 Robert Griesemer 前幾天代表 Go 語言開發團隊的提案審查委員會公布了關於否決一項提案的決定。Robert 在「內置的 Go 錯誤檢查函數,"try"」提案下面的回復中發布了這個公告,並表示基於社區壓倒性的反應和由此引起的廣泛討論,團隊決定提前拒絕此項提案。

關於 Go 2 的錯誤處理問題,Robert 表示團隊去年就已闡述了對此的看法,但當時並沒引起足夠的注意和討論。所以關於"try"語句的提案可能是解決此問題的一個很好的解決方案,但對於大多數使用者而言,這可能沒解決到什麼問題。

下面舉一個 try 語句的示例。

例如如下代碼:


f, err := os.Open(filename)
if err != nil {
	return …, err  // zero values for other results, if any
}

可通過使用 try 語句簡化為:


f := try(os.Open(filename))

可以看到,內置函數 try 採用一個單一表達式作為參數。表達式必須求出 n+1 個值(其中 n 可能為零),其中最後一個值必須是error類型。如果錯誤參數(final)為 nil,則返回前 n 個值(如果有),否則返回帶有該錯誤的封閉函數。

這種方法最主要的缺點是需要對錯誤結果參數進行命名,為此可能會導致 API 不夠美觀。總而言之,一開始try看起來就有點不尋常,因為它只是針對一個特定任務量身定製的語法糖,使用較少的樣板代碼進行錯誤處理,並且能足夠好地處理該任務。因此,它非常符合 Go 的哲學 ——try不是為解決所有錯誤處理情況而設計的;它旨在很好地處理最常見的情況,以保持設計簡單明了。


[admin ]

來源:OsChina
連結:https://www.oschina.net/news/108389/go-error-check-function-try-proposal
Go 語言團隊否決關於"try"語句的提案已經有202次圍觀

http://coctec.com/news/all/show-post-210307.html