错误验证递增和重复

Error validation is incremented and duplicated

当我像下面这样使用有效的全局变量时,我的错误验证不知何故会重复

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{}

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

因为你的 validationInit() func return 是 validation.Validation value 而不是 pointer它,你不能 return 来自多个函数或来自同一函数的多次调用的同一个全局变量。

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

示例:

var valid validation.Validation

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

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

我建议你省去全局变量,每次需要时只创建一个新的 validation.Validation 值和 return 这个新值(通过值或指向它的指针) .