我需要检查 Go 代码中的值是否为 null 或不存在吗?

问题描述 投票:0回答:1

我正在使用下面的代码在客户端删除sqs消息。

    if resp, err := s.client.DeleteMessageBatch(context.TODO(), &sqs.DeleteMessageBatchInput{
        Entries:  entries,
        QueueUrl: s.url,
    }); err != nil {
        return fmt.Errorf("failed to DeleteMessageBatch, %v, %v", err, resp.Failed)
    }

由于你不需要看整个代码,所以我写了部分代码。

如你所见,当 err 不为零时,我调用了

DeleteMessageBatchInput
并打印了错误消息。

假设调用时出现网络问题,则 err 不为 nil。 在这种情况下,

resp.Failed
可以有空值,从而导致内存问题?

如果是这样,我是否需要为上述情况编写一些防御代码?

任何帮助将不胜感激。

谢谢。

go amazon-sqs
1个回答
0
投票

一般来说,约定是当返回错误时,其余值无效。

所以你不必在错误情况下测试

resp
任何东西,你根本不应该使用它。

文档指出,您应该检查批处理错误以成功调用

Client.DeleteMessageBatch
。如果调用失败,您实际上无法确定,因为不清楚错误发生在哪里(例如,批处理可能已成功,但由于网络错误而您没有收到响应)。

© www.soinside.com 2019 - 2024. All rights reserved.