精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 官方錯誤處理討論:用 ? 替代 if err != nil 可以不?

開發 前端
今天我們給大家帶來了 Go 核心團隊的錯誤處理新提案,老大哥 @Ian Lance Taylor 基于 Rust 的問號操作符作為靈感,設計出了 Go 的問號操作符和塊的聯動機制。

大家好,我是煎魚。

對于 Go 這一門編程語言,截至目前較大爭議話題仍在 if err != nil 在 Go 應用里所帶來的各種繁雜代碼,引起了社區很多正反方的探討。

原本以為 Go 核心團隊已經擺爛了。但最近老大哥 @Ian Lance Taylor 提出了一個新提案[1](后轉為討論[2]),引起了大量的社區交流:

圖片圖片

背景:為什么還要關注這件事?

在 Go 核心團隊的視野中,現階段對于處理 Go 錯誤處理的動力,個人理解至少來源于以下幾個主要原因,不斷地推動他們看到這件事。

第一是:社區中用代碼反饋最多的,也就是在現在的 Go 應用代碼中,存在較多的 if err != nil 的相關代碼:

func CopyFile(src, dst string) error {
 r, err := os.Open(src)
 if err != nil {
  return err
 }
 defer r.Close()

 w, err := os.Create(dst)
 if err != nil {
  return err
 }
 defer w.Close()

 if _, err := io.Copy(w, r); err != nil {
  return err
 }
 if err := w.Close(); err != nil {
  return err
 }
}

一堆的 if err != nil 代碼。

第二是:在歷年的 Go 開發人員調查報告中提示 “錯誤處理被列為人們今天使用的最大特定挑戰”。

如下圖所示:

圖片圖片

在調查結果中,有提到:“在封閉問題中,回答最多的是學習如何有效地編寫 Go(15%)和錯誤處理的冗長(13%)。”

第三是:在 Go issues 中存在大量的 Go 錯誤處理的各類提案,例如:

圖片圖片

  • 《proposal: Go 2: onerr return[3]》
  • 《proposal: Go 2: add or err: statement after function calls for error handling[4]》
  • 《proposal: Go 2: Use ?variable simplify handling of multiple-return-values[5]》

太多太多太多這類提案了。我也分享過很多腦洞很大的社區錯誤新提案。

新提案:? 新語法

這種新語法的部分靈感來源于:Rust 的問號運算符。

? 將會吸收函數返回的錯誤,并在錯誤不為 nil 時自動返回,這與之前的 try 的提議類似。

它的不同之處在于:? 是一個顯式語法元素,而不是對預先聲明函數的調用,而且 ? 只能出現在語句的末尾,不能出現在表達式的中間。

基本介紹

例如,原本的 Go 錯誤處理代碼如下:

r, err := SomeFunction()
 if err != nil {
  return fmt.Errorf("something failed: %v", err)
 }

新提案引入新的 ? 語法,將其改寫為如下:

r := SomeFunction() ? {
  return fmt.Errorf("something failed: %v", err)
 }

當然。如果是另外一種原本的寫法:

if err := SomeFunction2(); err != nil {
  return fmt.Errorf("something else failed: %v", err)
 }

也依然可以改寫為:

SomeFunction2() ? {
  return fmt.Errorf("something else failed: %v", err)
 }

? 這個用法將會吸收函數的錯誤結果。它引入了一個新塊,如果錯誤結果不為 nil,則執行該塊塊。

在新塊中,fmt.Errorf 里的標識符 err 指的是上述吸收的錯誤結果。也就是當塊跟在 ? 后面時,它會隱式聲明一個新的 err 變量。

完整例子

func Run() error {
 Start() ? // returns error from Start if not nil
 Wait() ?  // returns error from Wait if not nil
 return nil
}
func CopyFile(src, dst string) error {
 r := os.Open(src) ? {
  return fmt.Errorf("copy %s %s: %v", src, dst, err)
 }
 defer r.Close()

 w := os.Create(dst) ? {
  return fmt.Errorf("copy %s %s: %v", src, dst, err)
 }

 io.Copy(w, r) ? {
  w.Close()
  os.Remove(dst)
  return fmt.Errorf("copy %s %s: %v", src, dst, err)
 }

 w.Close() ? {
  os.Remove(dst)
  return fmt.Errorf("copy %s %s: %v", src, dst, err)
 }
}
func MustOpen(n string) *os.File {
 f := os.Open(n) ? {
  panic(err)
 }
 return f
}
func TestFileData(t *testing.T) {
 f := os.Open("testfile") ? {
  t.Fatal(err)
 }
 ...
}
func CreateIfNotExist(name string) error {
 f, err := os.OpenFile(name, os.O_EXCL|os.O_WRONLY, 0o666)
 if errors.Is(err, fs.ErrExist) {
  return nil
 }
 err ? // returns err if it is not nil
 // write to f ...
}

社區爭論

Go 錯誤處理機制這事,一向是正反雙方都有。有支持繼續保持的,也有反對的。

其中一位社區同學 @Michael Fridman 直接掏出了 Go 創始人 @Rob Pike 的演講 PPT 語錄:

圖片

該位同學表示:這一提議的優點有限 -- 它增加了另一種做事的方式,并使代碼更難閱讀(具有諷刺意味的是)。

其真心希望谷歌不會不惜一切代價發展 Go 語言,因為這將損害 Go 的長期用戶對 Go 的喜愛。

并且表示:“讓我們保持 Go 的簡單和無趣”

總結

今天我們給大家帶來了 Go 核心團隊的錯誤處理新提案,老大哥 @Ian Lance Taylor 基于 Rust 的問號操作符作為靈感,設計出了 Go 的問號操作符和塊的聯動機制。

關于 Go 的錯誤處理機制,我經歷很多。見到各種人做封裝,還有使用 pnaic+recover 來做 error 機制的。各種方法都有。誰都不服誰。

但是目前 Go1 還是陷入了一個非常尷尬的境地,有人希望改,有人不希望改。無論如何都難以 “討好” 全部人。

接下來就看新上任的 Go 核心團隊負責人的魄力如何了。能否像以前 rsc 力推 module 一樣背負罵名且用力推進。

畢竟,@Ian Lance Taylor 能提出這個提案和討論。很有可能就是內部先討論過的了。

參考資料

[1]提案: https://github.com/golang/go/issues/71203

[2]討論: https://github.com/golang/go/discussions/71460

[3]proposal: Go 2: onerr return: https://github.com/golang/go/issues/32848

[4]proposal: Go 2: add or err: statement after function calls for error handling: https://github.com/golang/go/issues/33029

[5]proposal: Go 2: Use ?variable simplify handling of multiple-return-values: https://github.com/golang/go/issues/33074

責任編輯:武曉燕 來源: 腦子進煎魚了
相關推薦

2020-12-17 06:25:05

Gopanic 模式

2025-07-29 01:11:00

2024-06-05 08:47:20

Go語言方式

2025-06-09 08:01:12

2023-03-10 08:48:29

2014-11-17 10:05:12

Go語言

2021-04-29 09:02:44

語言Go 處理

2022-07-13 08:53:28

函數Go語言

2022-08-01 08:48:39

Go代碼接口

2025-06-05 02:25:00

2024-02-28 08:54:57

switchGo錯誤

2024-03-14 09:35:54

Go 錯誤select代碼

2022-05-26 08:53:47

Go函數代碼

2022-06-13 07:03:25

Go 語言怎么優化重

2025-06-06 06:45:54

2025-03-31 00:29:44

2021-09-13 07:53:31

Go錯誤處理

2022-09-05 08:55:15

Go2提案語法

2025-06-30 09:49:11

2025-09-05 01:55:00

Go并發錯誤項目
點贊
收藏

51CTO技術棧公眾號

在线观看亚洲天堂| 国产精品视频中文字幕| 天天摸天天碰天天爽天天弄| 日韩视频一区| 国产一区二区三区中文| 日韩精品视频一二三| 色女人在线视频| 99久久国产综合色|国产精品| 国产aⅴ夜夜欢一区二区三区 | 水蜜桃一区二区| 一级片一区二区三区| 亚洲激情自拍| 国产亚洲一区精品| 中文字幕无人区二| 精品国产第一福利网站| 亚洲天堂精品视频| 久久久久久久久久久久久久一区 | 视频在线在亚洲| 日韩综合视频在线观看| 久久久久久婷婷| 69堂精品视频在线播放| 一个色综合网站| 少妇免费毛片久久久久久久久| 国产成人久久精品77777综合| 美女诱惑黄网站一区| 欧美国产日韩xxxxx| 成人在线观看免费高清| 成人爽a毛片| 欧美日韩免费一区二区三区| 鲁一鲁一鲁一鲁一澡| 麻豆传媒视频在线| 久久色视频免费观看| 成人福利视频网| 无码一区二区三区| 亚洲大黄网站| 欧美丰满少妇xxxxx| 成人性视频免费看| 九九久久电影| 日韩成人在线播放| 国产亚洲精品成人a| 成人国产一区| 色成年激情久久综合| 欧美午夜小视频| 在线观看a级片| 国产精品国产a级| 欧美xxxx黑人又粗又长精品| 可以免费看毛片的网站| 国产尤物一区二区在线| 国产欧美日韩中文字幕| 无码人妻丰满熟妇区bbbbxxxx | 欧美激情18p| 永久免费看mv网站入口| 日韩欧美高清| 自拍偷拍亚洲欧美| 五月激情四射婷婷| 神马电影久久| 亚洲一区二区黄| 欧美做受高潮6| 视频国产一区| 国产香蕉精品视频一区二区三区| v8888av| 天堂资源在线亚洲| 精品视频久久久| 久久久久亚洲AV成人无码国产| baoyu135国产精品免费| 精品国产99国产精品| 337p日本欧洲亚洲大胆张筱雨| 激情不卡一区二区三区视频在线| 日韩亚洲欧美高清| 国产51自产区| 国内精品免费| 亚洲精品视频免费| 妺妺窝人体色WWW精品| 欧美色图在线播放| 色偷偷91综合久久噜噜| 97精品在线播放| 欧美国产先锋| 国内精品一区二区三区四区| 日本高清www免费视频| 亚洲一区日韩| 国产精品美女久久| 国产日韩欧美视频在线观看| 国产精品一卡二卡在线观看| 国产福利久久| 男人的天堂在线视频| 欧美国产日韩精品免费观看| 在线观看日韩羞羞视频| h片在线免费| 亚洲第一狼人社区| 日韩毛片在线免费看| 欧美天堂一区| 亚洲精品一区二区三区精华液 | 亚洲乱码中文字幕久久孕妇黑人| 三级成人在线| 欧美一区二区在线免费播放| 懂色av粉嫩av蜜乳av| 欧美手机视频| 欧美精品videossex88| 伦av综合一区| 国产精品一区三区| 免费看成人片| 97影院秋霞午夜在线观看| 精品女厕一区二区三区| 亚洲综合av在线播放| 精品av导航| www.亚洲成人| 免费观看一区二区三区毛片| 精品一区精品二区高清| 久久亚洲综合网| 成人在线app| 色综合久久久久| 手机在线观看日韩av| 激情综合网站| 欧美精品videos另类日本| 中文亚洲av片在线观看| 北条麻妃国产九九精品视频| 亚洲综合av一区| 激情黄产视频在线免费观看| 欧美一区二区性放荡片| 中文字幕被公侵犯的漂亮人妻| 午夜天堂精品久久久久| 国产精品久久久| 手机看片1024日韩| 亚洲美女视频在线| 黄色永久免费网站| 亚洲理论电影片| 欧美黑人巨大xxx极品| 91欧美日韩麻豆精品| 国产亚洲欧美日韩日本| 国产97在线 | 亚洲| 深夜福利一区二区三区| 日韩资源在线观看| 亚洲中文字幕无码爆乳av| k8久久久一区二区三区| 成人免费看片视频在线观看| 日本亚洲欧洲无免费码在线| 亚洲天堂第二页| 69视频免费在线观看| 成人午夜精品在线| 欧洲精品视频在线| 午夜精品久久久久久毛片| 国产一区二区三区欧美| 中文字幕在线看人| 2020国产精品自拍| 亚洲欧洲日产国码无码久久99| 国产成人夜色高潮福利影视| 欧美大片在线看| www.国产免费| 亚洲主播在线观看| 亚洲av无码久久精品色欲| 重囗味另类老妇506070| 国产中文欧美精品| 麻豆影院在线观看| 正在播放一区二区| 国产日产精品一区二区三区的介绍| 全部av―极品视觉盛宴亚洲| 日本视频一区二区不卡| 欧美日韩尤物久久| 中文字幕不卡在线视频极品| a片在线免费观看| 国产精品视频一区二区三区不卡| 九九视频精品在线观看| 超碰成人久久| 国产美女扒开尿口久久久| 91社区在线观看播放| 欧美性猛片aaaaaaa做受| 国产精品无码无卡无需播放器| 日本在线播放一区二区三区| 亚洲一区影院| 国产一区 二区| 欧美国产日韩在线| 涩涩视频免费看| 日韩欧美精品网址| 貂蝉被到爽流白浆在线观看| 精品一区二区在线看| 青青视频免费在线| 国产精品白浆| 国产aaa精品| 精品国产白色丝袜高跟鞋| 6080yy午夜一二三区久久| 久久精品一区二区三| av午夜一区麻豆| 日韩一级理论片| 亚洲一级淫片| 国产亚洲欧美一区二区| 欧美一区 二区 三区| 久久深夜福利免费观看| 欧美一区二不卡视频| 91黄视频在线| 国产成人综合在线视频| 91网上在线视频| 国产又大又黄又猛| 在线精品福利| 亚洲黄色成人久久久| 成人盗摄视频| 国产精品久久久久久婷婷天堂| 最新日本在线观看| 亚洲色无码播放| www.成人在线观看| 在线视频亚洲一区| 久久免费小视频| 中文字幕在线观看网站| 色综合天天综合在线视频| 黄色片网站在线播放| www.一区二区| 三日本三级少妇三级99| 亚洲一区免费| 欧美 日韩 国产精品| 精品日韩一区| 国产青春久久久国产毛片| 日韩成人在线电影| 日韩美女毛茸茸| 青春草视频在线| 日韩在线欧美在线国产在线| 亚洲av成人精品毛片| 欧美一区二区私人影院日本| 夜夜爽妓女8888视频免费观看| 亚洲精品日韩综合观看成人91| 成人精品在线观看视频| 高清成人免费视频| 福利片一区二区三区| 久久九九99| 精品无码国产一区二区三区av| 99精品美女| 日日骚一区二区网站| 加勒比色综合久久久久久久久| 成人美女av在线直播| 欧美aaa大片视频一二区| 68精品久久久久久欧美| 调教一区二区| 久久精品视频中文字幕| av电影在线播放高清免费观看| 亚洲精品www久久久| 亚洲精品一级片| 欧美一区二区黄| 国产三级小视频| 欧美精品自拍偷拍| 综合久久中文字幕| 在线影视一区二区三区| 国产一级18片视频| 欧美日韩国产在线播放| 日本一区二区三区四区五区| 亚洲综合色自拍一区| 久久久精品人妻一区二区三区四| 亚洲男人的天堂网| 老女人性淫交视频| 亚洲欧美一区二区久久| 小早川怜子一区二区的演员表| 国产精品麻豆网站| 欧美xxxooo| 综合网在线视频| 黑鬼狂亚洲人videos| 亚洲黄色av一区| 精品少妇一二三区| 亚洲一区在线观看免费观看电影高清 | 亚洲日本精品| 久久中文字幕二区| av动漫免费观看| 综合天堂久久久久久久| 黄色片免费在线观看视频| 国产在线不卡| 大j8黑人w巨大888a片| 午夜亚洲性色福利视频| wwwxxx黄色片| 日本伊人午夜精品| 在线视频一二区| 成人午夜在线视频| 国精产品一区一区三区免费视频| 国产人妖乱国产精品人妖| 亚洲精品国产精品乱码在线观看| 亚洲女人****多毛耸耸8| 国产中文字幕免费| 欧美日韩亚洲视频一区| 久久这里只有精品9| 欧美电影一区二区| 韩国av永久免费| 亚洲欧美制服丝袜| 欧美a免费在线| 国a精品视频大全| 网友自拍亚洲| 91色视频在线导航| 色爱av综合网| 伊人久久大香线蕉av一区| 国产精品av久久久久久麻豆网| 凹凸国产熟女精品视频| 麻豆国产一区二区| 欧美激情一区二区三区p站| 久久久久久一二三区| fc2ppv在线播放| 亚洲成a人在线观看| 波多野结衣午夜| 精品日韩一区二区三区| 电影av一区| 久久久人成影片一区二区三区观看 | 国产精品久久久久久户外露出| 欧美成人免费看| 色综合中文综合网| av资源免费看| 亚洲人成人99网站| 污污的视频在线观看| 国产91色在线|| 一区二区中文字幕在线观看| 日韩精品另类天天更新| 亚洲欧洲视频| 日韩a一级欧美一级| 久久婷婷综合激情| 久久久久久久久艹| 欧美三级电影在线看| 蜜桃视频污在线观看| 日韩亚洲一区二区| 久久uomeier| 国产精品日韩一区二区| 香蕉视频国产精品 | 韩国一区二区在线观看| 成年人免费观看视频网站| 夜夜亚洲天天久久| 国产精品久久久久久免费免熟| 亚洲欧美国产精品久久久久久久| 1stkiss在线漫画| 成人女保姆的销魂服务| 国产欧美高清视频在线| 欧美精品久久久久久久自慰| 极品少妇xxxx精品少妇| 黄大色黄女片18免费| 色综合色综合色综合| 色wwwwww| 欧美极品美女视频网站在线观看免费| 伊人亚洲精品| 亚洲蜜桃av| 视频一区二区三区在线| 国产艳俗歌舞表演hd| 午夜精品久久久久久久99水蜜桃 | 激情亚洲综合在线| 人妻互换一区二区激情偷拍| 色94色欧美sute亚洲线路一久| 午夜影院免费视频| 午夜精品久久久久久99热| 成人在线视频中文字幕| av影院在线播放| 国产精品一二三| 国产大片免费看| 欧美一区欧美二区| 午夜dj在线观看高清视频完整版| 成人深夜直播免费观看| 婷婷伊人综合| 中文字幕久久av| 亚洲色图欧洲色图| 国产免费视频一区二区三区| 久久影院模特热| 色播一区二区| 日韩欧美国产综合在线| av综合在线播放| 日本一级一片免费视频| 日韩电影免费在线观看中文字幕| 第一福利在线视频| 久久久久高清| 蜜桃久久av| 美女网站视频色| 日韩一区二区在线观看视频播放| 超碰超碰在线| 动漫精品视频| 国产精品综合色区在线观看| 久久久久久亚洲中文字幕无码| 色综合久久99| 日本网站在线免费观看视频| 亚洲一区二区三区xxx视频| 欧美片第1页综合| 欲求不满的岳中文字幕| 色婷婷精品大在线视频| 自拍视频在线网| 91亚洲国产成人精品性色| 欧美日韩日本国产亚洲在线| 手机在线看片日韩| 欧美综合亚洲图片综合区| av免费在线免费| 国产视频一区二区三区四区| 日韩精品五月天| 亚洲av无码一区二区三区在线| 亚洲精品一线二线三线无人区| 樱桃视频成人在线观看| 亚洲最新在线| 成人综合在线观看| 国产一级免费视频| 操91在线视频| 欧洲精品一区| 亚洲欧美久久久久| 亚洲成人资源网| av在线播放av| 国产精品国产三级欧美二区 | 成人动漫免费在线观看| 人妻激情偷乱视频一区二区三区| 亚洲成人精品一区二区| 在线中文资源天堂| 国产精品手机视频| 免费高清成人在线| 日本熟妇毛耸耸xxxxxx| 中文字幕在线亚洲| 日韩有码av| 女同性αv亚洲女同志| 欧美中文字幕一二三区视频|