亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 中的錯誤 - 評估錯誤

Golang 中的錯誤 - 評估錯誤

Go
Cats萌萌 2021-10-04 16:10:50
我正在嘗試理解以下示例https://gobyexample.com/errors除了這部分,我理解大部分內容:_, e := f2(42)if ae, ok := e.(*argError); ok {    fmt.Println(ae.arg)    fmt.Println(ae.prob)}我不確定這條線是做什么的:if ae, ok := e.(*argError); ok {
查看完整描述

1 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

e.(*argError)

是將值 e 轉換為 *argError 類型的類型斷言。這是 f2() 在錯誤時返回的類型 - 它是一個指向 argError 結構的指針,該結構實現了錯誤接口。此類型斷言將多值評估為 (ae,ok),其中 ae 是 *argError 類型的值,如果成功,ok 是一個布爾值,讓您知道它是否成功。

go 中的 if 語句可以分為初始賦值部分,然后是分號,然后是要評估的布爾條件以確定分支。

那么總而言之,

if ae, ok := e.(*argError); ok {

意思是:嘗試將 e 強制轉換為 *argError,如果成功(執行 if 塊)。

為什么要這樣做?因為 argError 具有不在普通錯誤 (arg, prob) 中的字段,您可能想要使用這些字段。在執行此操作的實際代碼中,您可能還需要在“else”分支中處理 e 不是 argError 而是其他一些錯誤類型的情況。


查看完整回答
反對 回復 2021-10-04
  • 1 回答
  • 0 關注
  • 213 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號