根據Examiner ,Gmail API 錯誤響應結構包括一個代碼字段_, err := gmailService.Users.Messages.Send("me", &gMsg).Do()t := reflect.TypeOf(err)examiner(t,0)回復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...我可以使用字段索引成功獲取錯誤代碼,但這更晦澀(因此更難維護)并且感覺更脆弱:errReflectElem := reflect.ValueOf(err).Elem() fmt.Printf("err.Code %v\n",errReflectElem.Field(0).Interface())看來我也應該能夠根據這個示例得到如下錯誤代碼:fmt.Println("Code: %v",err.Code)但是,這會產生構建錯誤:err.Code undefined (type error has no field or method Code)我錯過了什么?
1 回答

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