错误验证递增和重复
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 这个新值(通过值或指向它的指针) .
当我像下面这样使用有效的全局变量时,我的错误验证不知何故会重复
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 这个新值(通过值或指向它的指针) .