根据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 关注
- 97 浏览
添加回答
举报
0/150
提交
取消