You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Go语言中为结构体指针字段设置默认回退值的方法

实现方法

方法一:封装通用辅助函数

如果需要频繁处理这类指针转默认值的场景,封装一个复用的小函数最方便:

func getStringOrDefault(s *string) string {
    if s != nil {
        return *s
    }
    return ""
}

调用时直接传入指针即可:

sampleFunc(ctx, getStringOrDefault(body.A))
sampleFunc(ctx, getStringOrDefault(body.B))

方法二:调用处直接判断

如果只是偶尔处理一次,不用额外写函数,直接在调用前做nil判断:

// 分步写法
aVal := ""
if body.A != nil {
    aVal = *body.A
}
sampleFunc(ctx, aVal)

// 一行简化写法
bVal := ""; if body.B != nil { bVal = *body.B }
sampleFunc(ctx, bVal)

补充:Go 1.18+ 泛型通用版(支持多类型)

如果之后还要处理int、bool等其他类型的指针默认值,可以用泛型写个通用函数:

func getOrDefault[T any](ptr *T, defaultValue T) T {
    if ptr != nil {
        return *ptr
    }
    return defaultValue
}

调用时指定对应默认值:

sampleFunc(ctx, getOrDefault(body.A, ""))

内容的提问来源于stack exchange,提问作者Sai Krishna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 22:31:59