排查1
当查询不到数据时,item
变量为nil
,此时会触发BUG
:
exception recovered: runtime error: invalid memory address or nil pointer dereference
其中的resourceV1.GetTemplateRes
结构体的定义如下:
将代码改为如下即可解决问题,相当于增加了一个if
判断:
排查2
经过进一步排查,发现根因在这里:
因为返回的resourceV1.GetTemplateRes
结构体中嵌套了一个指针结构体,并且这个指针结构体的属性是nil
,那么在外层直接使用template.TemplateId
访问时,其实是想要访问resourceV1.GetTemplateRes
中嵌套的指针结构体*entity.ResourceParamTemplate
中的TemplateId
属性。但是这个时候该属性*entity.ResourceParamTemplate
是nil
,那么直接访问它的属性TemplateId
则会报空指针问题。