pointers - 将字符串指针转换为空字符串为 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 ""
}
解决方案
你写的方式是最短的方式。
问题是为什么 func 需要字符串作为指针?
您似乎正在尝试使用可选参数来解决问题。database.AllDataPointsMetricVolumes
函数已经允许空字符串。因此,如果您传递值而不是指针,则可以废弃该函数并database.AllDataPointsMetricVolumes
直接使用该函数。
推荐阅读
- python - Raspberry Pi / 数字光强光敏传感器模块
- django - Django/Wagtail ImportError:无法从“django.db.models.fields”导入名称“FieldDoesNotExist”
- sql - 具有不同条件的多列 SQL 查询
- angular - 如何使用 select 禁用/启用特殊行值?
- c# - 从 DbContext c# 的特定子方法调用父方法 DbContext.SaveChanges()
- python - Openpyxl 次要网格线
- r - 如何合并长度不等的数据框列表?
- java - 如何处理 querydsl 多个模式具有相同的表名?
- kubernetes - 如何将使用 Persistent Volume Claim 的 Kubernetes 部署扩展到 2 个 Pod?
- node.js - 具有多个查询的 MongoDB findOne 返回错误的结果