Go语言 如何为变量分配默认回退值[重复]

kb5ga3dv  于 2023-05-20  发布在  Go
关注(0)|答案(2)|浏览(67)

此问题已在此处有答案

Default value in Go's method(4个答案)
Using default value in golang func [duplicate](4个答案)
7天前关闭
我的应用程序中有struct个指针

type body struct {
   A *string
   B *string
}

我想在body函数中传递AB的值,这样如果指针A为null,则传递默认的空字符串值。类似于:

sampleFunc(ctx,*A||"");

func sampleFunc(ctx Context,count string){
// ......
}

我该怎么做?

sr4lhrrt

sr4lhrrt1#

没有内置的语法糖,只需编写代码:

count := ""
if myBody.A != nil {
    count = *myBody.A
}

sampleFunc(ctx, count)

如果你发现自己经常写这段代码(比如:对于许多单独的字段),您可以例如创建一个helper函数:

func getOrDefault(val *string, deflt string) string  {
    if val == nil {
        return deflt
    }
    return *val
}

count := getOrDefault(myBody.A, "")
sampleFunc(ctx, count)
xpszyzbs

xpszyzbs2#

使用所需的逻辑声明一个函数,用于从指针计算值。我在这里使用泛型,所以函数可以处理任何类型。

// Value returns the value the value pointed
// to by p or the empty value when p is nil.
func Value[T any](p *T) T {
    var result T
    if p != nil {
        result = *p
    }
    return result
}

像这样使用:

sampleFunc(ctx, Value(A))

带有*string字段的API通常会为此提供一个helper函数。例如,AWS API提供StringValue函数:

sampleFunc(ctx, aws.StringValue(A))

相关问题