1

当我使用如下有效的全局变量时,我的错误验证以某种方式重复

var (
    valid validation.Validation
)

func validationInit() validation.Validation {
    valid := validation.Validation{}
    return valid
}

但是当我移动valid := validation.Validation{}到我的模型函数时,它可以正常工作,没有任何重复,如下所示:

func AddClub(name string) (id int64, error []*validation.ValidationError) {
    club := Club{Name: name}
    valid := validation.Validation{}

我怎样才能不在每个函数中复制这个有效值,而是在不增加和复制结果的情况下重用变量?

4

1 回答 1

1

由于您的validationInit()func 返回一个validation.Validation 而不是指向它的指针,因此您不能从多个函数或同一函数的多次调用返回相同的全局变量。

如果你真的想要这个,你必须返回一个指向全局变量的指针,否则将返回一个全局变量值的副本。

例子:

var valid validation.Validation

func someFunc() *valid.Validation {
    // You can access the global variable valid here, you can also modify it
    return &valid
}

但这很可能不是您想要的。这将不允许您validation.Validation的函数返回同时存在 2 个不同的值。

我建议您省略全局变量,validation.Validation每次需要时创建一个新值并返回该新值(通过值或指向它的指针)。

于 2015-01-12T18:07:29.530 回答