如何通过结构字段名称获取 Gmail API 错误代码?

根据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)

我错过了什么?


偶然的你
浏览 99回答 1
1回答

守候你守候我

根据文档,它返回一个*googleapi.Error. 只需声明此类型,您就可以完全访问它包含的所有内容。这是接口的强大功能和通过导出类型进行正确错误处理的主要示例。如果导出此类错误类型,则无需反射即可访问它。if gapiErr, ok := err.(*googleapi.Error); ok {    // use gapiErr.WhateverField}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go