首页 > 解决方案 > 将字符串指针转换为空字符串为 nil

问题描述

我有一个功能。接收两个变量作为字符串指针,这些参数需要传递给另一个函数。但我需要将它们转换为字符串,""如果它是一个空指针,则使用空字符串,我已经实现了这一点,但发现我的版本很麻烦。如何简化/美化它?

func allMetricVolumes(start, end *string, measuredType []string, volumeUUID string) []*models.ResourceMetrics {
    var startStr = ""
    if start != nil {
        startStr = *start
    }

    var endStr = ""
    if end != nil {
        endStr = *end
    }

    return database.AllDataPointsMetricVolumes(startStr, endStr, measuredType, volumeUUID)
}

编辑:

这也是我想出的一个选项,只是为了创建一个辅助函数。但主要论点仍然存在,如果它可以更短?

func stringPointerToString(input *string) string {
    if input != nil {
        return *input
    }
    return ""
}

标签: pointersgo

解决方案


你写的方式是最短的方式。

问题是为什么 func 需要字符串作为指针?

您似乎正在尝试使用可选参数来解决问题。database.AllDataPointsMetricVolumes函数已经允许空字符串。因此,如果您传递值而不是指针,则可以废弃该函数并database.AllDataPointsMetricVolumes直接使用该函数。


推荐阅读