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

Go 語言怎么解決編譯器錯誤“err is shadowed during return”?

開發 前端
本文我們介紹為什么會出現該錯誤,以及我們應該怎么解決?

1介紹

在 Go 語言開發中,我們可能會遇到“錯誤在返回時被隱藏”的錯誤,該錯誤在 Go 編碼時很難發現,在 GoLand 中也只是會變量名高亮提示,只有在編譯 Go 項目時,Go 編譯器會返回 err is shadowed during return。

本文我們介紹為什么會出現該錯誤,以及我們應該怎么解決?

2.為什么出現該錯誤?

示例代碼:

package main

import (
"errors"
"log"
)

func main() {
err := foo()
if err != nil {
log.Printf("err=%v\n", err)
return
}
}

func foo() (err error) {
if err := bar(); err != nil {
return // Compiler reports: err is shadowed during return
}
return nil
}

func bar() error {
err := errors.New("this is bar's err")
return err
}

輸出結果:

./main.go:18:3: err is shadowed during return

閱讀上面這段代碼,我們在編譯代碼時,編譯器返回錯誤“err is shadowed during return”。

因為函數 func foo() (err error)? 的返回值是具名參數,其作用域是函數 foo()? 的函數體,在函數體中,if? 分支使用短變量聲明的方式重新聲明變量 err?,它的作用域是 if 分支。

在 if? 分支聲明的變量 err?,它的內存地址與外層變量 err? 不是同一個內存地址,而在 if? 分支中使用 return? 返回的是外層變量 err?,所以 if? 分支中的變量 err? 被外層變量 err 所遮蔽,導致在編譯 Go 項目時,Go 編譯器返回錯誤“err is shadowed during return”。

3.怎么解決?

閱讀完 Part02,讀者朋友們已經了解了錯誤的原因。實際上,出現該錯誤,歸根結底是我們沒有真正掌握 Go 的基礎知識。

為什么這么說呢?因為在我們公眾號的歷史文章中,關于 Go 變量聲明、作用域、函數等基礎知識都有介紹。

如果讀者朋友們徹底掌握這些基礎知識,大概率是不會遇到該錯誤“err is shadowed during return”。

解決該錯誤也比較簡單,錯誤的原因是變量被遮蔽,我們通過使用不同的變量名,可以輕松規避這個錯誤。

示例代碼:

...
func foo() (err error) {
if err1 := bar(); err1 != nil {
return
}
return nil
}
...

但是,使用不同的變量名真的解決問題了嗎?

我們運行使用不同變量名的代碼,確實 Go 編譯器沒有返回錯誤,我們可以正常編譯 Go 項目。

細心的讀者朋友們可能已經發現,該解決方案雖然可以規避 Go 編譯器返回錯誤,但是并沒有將錯誤傳遞到外層變量 err。

所以,我們還需要將新變量 err1 的值賦值給外層變量 err,代碼如下:

...
func foo() (err error) {
if err1 := bar(); err1 != nil {
err = err1
return
}
return nil
}
...

現在,我們才算徹底解決了問題。改造后的代碼,既不會引起 Go 編譯器返回錯誤,也可以將錯誤信息傳遞出去。

讀者朋友們如果有代碼“潔癖”,肯定覺得這么寫代碼太不優雅了。那么,有沒有優雅的解決方案呢?

答案是有更優雅的解決方案,我們在講變量作用域的文章中也有講過,在具名返回值的函數中,如果在函數體不同作用域中使用同名變量,不能直接返回,而是需要在 return 后面跟上變量名。

func foo() (err error) {
if err := bar(); err != nil {
return err
}
return nil
}

閱讀上面這段代碼,我們在 if? 分支的作用域中,在 return? 后面跟上變量名 err,該方式也可以解決問題,而且比使用不同變量名的方式更優雅。

現在,我們學會了兩種解決方案。但是,還沒有結束。我們示例代碼中,調用函數 bar 是單返回值,在實際項目開發中,還會遇到調用函數是多返回值。

package main

import (
"errors"
"log"
)

func main() {
err := foo()
if err != nil {
log.Printf("err=%v\n", err)
return
}
}

func foo() (err error) {
if code, err := bar(); err != nil {
log.Printf("code=%v err=%v\n", code, err)
return // Compiler reports: err is shadowed during return
}
return nil
}

func bar() (int, error) {
err := errors.New("this is bar's err")
return 200, err
}

輸出結果:

./main.go:19:3: err is shadowed during return

閱讀上面這段代碼,調用函數 bar() 是多返回值。

對于調用函數是多返回值的情況,除了我們已經講的兩種解決方式,還有其它解決方式。

...
func foo() (err error) {
var code int
if code, err = bar(); err != nil {
log.Printf("code=%v err=%v\n", code, err)
return
}
return nil
}
...

閱讀上面這段代碼,我們單獨聲明新變量 code?,而不是使用短變量的方式聲明新變量 code?,避免變量 err 也被重新聲明。

4.總結

本文我們介紹 Go 語言編譯錯誤 err is shadowed during return 的原因和解決方案。先是介紹出現該錯誤的原因,然后介紹了解決該錯誤的三種解決方式。

需要注意的是,我們示例代碼 foo 函數是具名返回值,本文講的解決方案并不適用于匿名返回值的函數。

參考資料:

https://groups.google.com/g/golang-nuts/c/HmmZXC7KcVw?pli=1

https://go.dev/ref/spec#Short_variable_declarations

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2013-12-30 11:21:31

Go編譯器

2022-06-13 07:03:25

Go 語言怎么優化重

2021-09-06 07:59:13

Go編譯器語言

2023-08-22 08:00:00

編譯器開發RustOCaml

2025-03-13 07:32:26

2021-08-22 17:18:58

Go代碼泛型代碼

2010-01-18 10:34:21

C++編譯器

2010-01-21 09:11:38

C++編譯器

2009-08-10 17:12:54

C#編譯器

2013-03-29 10:02:37

編譯器語言編譯開發

2017-03-20 18:01:55

編譯器匯編

2010-03-23 11:17:16

Python 動態編譯

2021-05-13 18:53:34

Go編譯器Uber

2012-03-26 14:25:34

C++

2020-12-17 06:25:05

Gopanic 模式

2010-10-20 13:43:37

C++編譯器

2019-08-06 08:20:07

編譯器工具開發者

2020-10-26 11:33:45

編程語言編譯器軟件

2010-03-02 10:55:47

Linux SkyEy

2009-08-06 14:59:36

C#編譯器
點贊
收藏

51CTO技術棧公眾號

最近在线中文字幕| www.com在线观看| 精品理论电影在线| 欧美性受xxxx| 成人在线观看毛片| 五月婷婷丁香六月| 免费日本视频一区| 欧美日本精品在线| 国产男女猛烈无遮挡a片漫画| 欧美影视资讯| 一区二区激情小说| 欧美精品亚洲精品| 国产精品视频一二区| 在线观看不卡| 最新的欧美黄色| 性生活一级大片| 玛雅亚洲电影| 一区二区免费在线| 日韩一本精品| 日本精品一二区| 麻豆91在线播放免费| 欧美激情视频在线观看| 免费看污片的网站| 57pao国产一区二区| 欧美性猛交xxxxxx富婆| 成人免费在线网| 91青青在线视频| 成人sese在线| 91精品视频在线看| 毛片在线免费视频| 黑丝一区二区三区| 色多多国产成人永久免费网站 | 精品国产乱码久久久久久108| 欧美性受xxx黑人xyx性爽| 亚洲黄色免费| 超碰97人人做人人爱少妇| 精品无码一区二区三区| 超碰成人在线观看| 日韩一区二区在线播放| 天天色综合天天色| 欧美国产大片| 精品欧美激情精品一区| 天堂8在线天堂资源bt| 国产视频在线播放| 中文字幕人成不卡一区| 涩涩涩999| av在线免费一区| 久久久亚洲高清| 蜜桃成人免费视频| 亚洲人成色777777老人头| 成人午夜电影网站| 超碰97网站| 国产丰满果冻videossex| 美女任你摸久久| 国产精品久久久久久久久久尿| 在线观看免费av片| 国产精品亚洲综合色区韩国| 26uuu国产精品视频| 福利一区二区三区四区| 激情偷拍久久| 久久久久久久av| 精品无码av在线| 激情另类综合| 韩国视频理论视频久久| 日本黄色片视频| 日韩午夜电影| 日韩免费观看视频| 一级一级黄色片| 美女视频黄 久久| 成人激情视频网| 99久久精品国产色欲| 国产精品1024| 国产一区二区三区高清视频| 日批免费在线观看| 久久综合久久综合亚洲| 色噜噜色狠狠狠狠狠综合色一| h视频网站在线观看| 中文字幕制服丝袜一区二区三区 | 亚洲欧美高清在线| 国产精品白丝av嫩草影院| 亚洲高清久久久久久| 成人乱码一区二区三区av| 精品久久美女| 美日韩精品视频免费看| 国产一级中文字幕| 久久福利影视| 成人国产亚洲精品a区天堂华泰| 国产免费无遮挡| 99精品视频中文字幕| 欧美日韩亚洲在线| 免费观看成人高潮| 亚洲成人av一区二区| 免费日韩中文字幕| 蜜桃精品一区二区三区| 日韩第一页在线| 日本伦理一区二区三区| 欧美aⅴ99久久黑人专区| 91国内产香蕉| 97人妻精品一区二区三区视频| 国产成+人+日韩+欧美+亚洲 | 婷婷亚洲最大| 午夜精品一区二区三区在线播放 | 国产啊啊啊视频在线观看| 色综合一区二区三区| 久久6免费视频| 日韩精品导航| 久久视频免费观看| wwwwww国产| 国产黑丝在线一区二区三区| 欧美极品一区二区| 污污网站在线看| 欧洲一区二区三区在线| 麻豆tv在线观看| 欧美日韩中文字幕一区二区三区 | 亚洲电影网站| 91美女精品| 91精品国产综合久久福利 | 欧美重口另类| 美女久久久久久久久久久| 久久中文字幕免费| 国产成人免费xxxxxxxx| 亚洲国产一区二区精品视频| 中文字幕一区二区人妻电影| 欧美性受xxxx黒人xyx性爽| 日韩精品一区二区av| 可以免费看不卡的av网站| 91在线在线观看| porn亚洲| 欧美性20hd另类| 插我舔内射18免费视频| 亚洲情侣在线| 国产精品一区二区久久久| 视频三区在线观看| 一区二区三区不卡在线观看| 涩涩网站在线看| 欧美熟乱15p| 国产99视频精品免视看7| 熟妇高潮一区二区高潮| 一区二区三区蜜桃网| 在线观看免费不卡av| 欧美少妇xxxx| 国产精品丝袜高跟| 婷婷开心激情网| 中文字幕成人在线观看| 韩国中文字幕av| 精品freesex老太交| 欧美在线视频免费观看| 完全免费av在线播放| 四虎永久在线精品无码视频| 红杏aⅴ成人免费视频| 久久久亚洲影院| 欧美特级特黄aaaaaa在线看| 亚洲国产日韩一区二区| 欧美极品jizzhd欧美仙踪林| 欧美午夜影院| 国产精品三区在线| 国产精品国精产品一二| 亚洲第一精品福利| 日本特黄特色aaa大片免费| 成人免费视频app| www.av毛片| 香蕉久久精品| 国产成人精品免费视频| 国产黄在线观看| 欧美亚洲日本国产| 少妇视频一区二区| 国产一区三区三区| 欧美亚洲黄色片| 亚洲第一福利专区| 国产精品99一区| 激情成人四房播| 欧美大片免费久久精品三p| 伊人国产在线观看| 久久综合色一综合色88| 嫩草影院国产精品| 亚洲乱码在线| 国产视频一区二区不卡| 国产不卡网站| 日韩中文在线中文网在线观看| 国产乱码久久久久| 亚洲一区二区三区视频在线播放 | 欧美黄色影院| 国产精品91久久久| 黄色网页在线免费看| 欧美变态tickle挠乳网站| 自拍偷拍欧美亚洲| 国产精品私人影院| 能看毛片的网站| 国产精品老牛| 宅男噜噜99国产精品观看免费| 亚洲精品一二三**| 日本高清不卡在线| av免费在线观| 亚洲美女久久久| aa视频在线免费观看| 岛国精品视频在线播放| 亚洲女人毛茸茸高潮| bt7086福利一区国产| 亚洲精品视频导航| 亚洲香蕉网站| 亚洲美女网站18| 欧美巨大xxxx| 91在线视频导航| 男人皇宫亚洲男人2020| 草民午夜欧美限制a级福利片| 四虎影视在线播放| 91精品国产乱| 成人a v视频| 午夜精品123| 欧美特黄一级片| 久久女同精品一区二区| 18禁一区二区三区| 久久精品免费观看| 精品中文字幕av| 欧美国产先锋| 一本久久a久久精品vr综合 | 国产精品无码久久久久成人app| 精品国产精品三级精品av网址| 天海翼在线视频| 国产人久久人人人人爽| 久久无码专区国产精品s| 久久国产精品第一页| 欧美日韩在线中文| 红桃视频国产精品| 最新黄色av网站| 久久亚洲国产| 色姑娘综合av| 九一亚洲精品| 久久人人97超碰人人澡爱香蕉| 久久天堂久久| 亚洲一区二区三区成人在线视频精品| 色婷婷综合久久久中字幕精品久久 | 亚洲一区二区三区在线免费观看| 蜜桃成人精品| 国产成人激情小视频| 美女露胸视频在线观看| 欧美—级高清免费播放| www在线免费观看视频| 日韩在线观看免费| 在线激情小视频| 尤物九九久久国产精品的特点| 欧美伦理影视网| 日韩激情av在线免费观看| 乱精品一区字幕二区| 日韩一区二区电影在线| 国产情侣自拍小视频| 69堂亚洲精品首页| 97caocao| 欧美丰满少妇xxxbbb| 岳乳丰满一区二区三区| 欧美日韩国产高清一区二区三区| 亚洲免费视频二区| 欧美日韩精品一区二区| 亚洲一区二区人妻| 欧美人与性动xxxx| 97超碰人人草| 欧美一级一级性生活免费录像| 99热这里只有精品3| 欧美一区二区三区在线| 99在线小视频| 亚洲大胆人体视频| 四虎在线观看| 国产一区二区三区毛片| avtt亚洲| 久久国产精品偷| 国产经典三级在线| 日韩av电影院| 激情亚洲小说| 91九色露脸| 欧美精品国产白浆久久久久| 欧美日韩一区综合| 99久久夜色精品国产亚洲狼| 成人手机在线播放| 99精品视频免费观看| 国产激情在线观看视频| 久久99热这里只有精品| 性生活在线视频| av电影天堂一区二区在线| 88久久精品无码一区二区毛片| 国产精品欧美经典| 国产免费无码一区二区视频| 亚洲不卡一区二区三区| 久久永久免费视频| 91精品国产一区二区三区| 色婷婷视频在线| 亚洲图片欧美日产| 国产精品一卡二卡三卡| 午夜精品福利视频| 97成人超碰| 国产精品区一区二区三在线播放 | 一级做a爰片久久| 国产主播精品| 国产性生交xxxxx免费| 国产乱人伦偷精品视频免下载| 久久久久亚洲无码| 中文字幕不卡一区| 国产一级在线观看视频| 欧美少妇bbb| 欧美 日韩 国产 成人 在线| 国产香蕉精品视频一区二区三区| av在线免费网站| 欧美在线观看一区二区三区| 成人日韩视频| 欧美日韩免费观看一区| 欧美午夜久久| 亚洲色图 在线视频| 成人黄色一级视频| 乱老熟女一区二区三区| 精品欧美激情精品一区| 精品久久久久成人码免费动漫| 亚洲男人天堂2023| 日本不卡影院| 欧美精品在线观看一区二区| 91精品在线影院| 在线播放国产一区| 欧美mv日韩mv亚洲| аⅴ资源新版在线天堂| 久久久女女女女999久久| 男人亚洲天堂| 欧美精品一区二区三区在线看午夜| 亚洲欧洲美洲一区二区三区| 中文字幕在线观看第三页| 不卡视频一二三| 国产精品三区在线观看| 欧美性色黄大片| 视频国产一区二区三区| 欧美激情a在线| 国产乱码精品一区二区三区亚洲人| 日韩欧美精品一区二区| 日韩一级精品| 四虎精品一区二区| 亚洲激情图片小说视频| 888奇米影视| 国产亚洲综合久久| 日韩av大片站长工具| 久久av一区二区三区漫画| 欧美午夜免费影院| 国产精品91av| 亚洲激情自拍偷拍| av资源免费看| 久99久在线视频| 日韩三级不卡| 欧美日韩dvd| 国产精品夜夜嗨| 精品国产精品国产精品| 911精品国产一区二区在线| 永久免费av在线| 国产美女直播视频一区| 成人一区不卡| 亚洲一区日韩精品| 中文字幕字幕中文在线中不卡视频| 中文字幕网址在线| 少妇高潮久久久久久潘金莲| 九七电影院97理论片久久tvb| 亚洲欧美久久234| 麻豆久久久久久| 91日韩中文字幕| 精品免费一区二区三区| av在线私库| 欧美日韩国产三区| 日韩激情一二三区| 波多野结衣喷潮| 欧美一区二区免费| h片视频在线观看| 欧美凹凸一区二区三区视频| 日欧美一区二区| 婷婷丁香综合网| 欧美一区二区私人影院日本| 牛牛精品在线| 免费在线一区二区| 蜜臀精品久久久久久蜜臀| 三级在线观看免费大全| 欧美大肚乱孕交hd孕妇| 91超碰在线播放| 日本免费高清不卡| 精品一区二区av| 国产精品第72页| 亚洲欧美资源在线| 91精品国产自产观看在线 | 91激情在线| 电影午夜精品一区二区三区 | 欧洲精品在线视频| 欧美自拍偷拍| 无码人妻一区二区三区精品视频| 精品国产1区2区| aaa在线观看| 成人精品一二区| 久久中文在线| 欧美日韩在线国产| 日韩精品中文字幕视频在线| 久久婷婷五月综合色丁香| wwwwww欧美| 日本一区二区在线不卡| 超碰免费在线97| 日韩av日韩在线观看| 亚洲欧美一级二级三级| 久久精品国产亚洲av久| 日韩一二三四区| 色香欲www7777综合网| 免费特级黄色片|