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
相关产品推荐
相关产品推荐

