根據(jù)Examiner ,Gmail API 錯(cuò)誤響應(yīng)結(jié)構(gòu)包括一個(gè)代碼字段_, err := gmailService.Users.Messages.Send("me", &gMsg).Do()t := reflect.TypeOf(err)examiner(t,0)回復(fù)Type is and kind is ptr Contained type: Type is Error and kind is struct Field 1 name is Code type is int and kind is int...我可以使用字段索引成功獲取錯(cuò)誤代碼,但這更晦澀(因此更難維護(hù))并且感覺(jué)更脆弱:errReflectElem := reflect.ValueOf(err).Elem() fmt.Printf("err.Code %v\n",errReflectElem.Field(0).Interface())看來(lái)我也應(yīng)該能夠根據(jù)這個(gè)示例得到如下錯(cuò)誤代碼:fmt.Println("Code: %v",err.Code)但是,這會(huì)產(chǎn)生構(gòu)建錯(cuò)誤:err.Code undefined (type error has no field or method Code)我錯(cuò)過(guò)了什么?
1 回答

守候你守候我
TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超10個(gè)贊
根據(jù)文檔,它返回一個(gè)*googleapi.Error
.?只需聲明此類型,您就可以完全訪問(wèn)它包含的所有內(nèi)容。這是接口的強(qiáng)大功能和通過(guò)導(dǎo)出類型進(jìn)行正確錯(cuò)誤處理的主要示例。如果導(dǎo)出此類錯(cuò)誤類型,則無(wú)需反射即可訪問(wèn)它。
if gapiErr, ok := err.(*googleapi.Error); ok {
? ? // use gapiErr.WhateverField
}
- 1 回答
- 0 關(guān)注
- 123 瀏覽
添加回答
舉報(bào)
0/150
提交
取消