错误验证会增加并重复

时间:2015-01-12 15:13:09

标签: go beego

当我使用下面的有效全局变量

时,我的错误验证会重复
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{}

我怎样才能在每个函数中复制此有效值,但重用变量而不会使结果递增和重复?

1 个答案:

答案 0 :(得分: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
}

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

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