英文:
Why does go-validator have to be a pointer?
问题
我在互联网上看到一个教程,它创建了一个指针作为验证器,但从未解释过。这样做是否有任何潜在目的?
// Validation 包含
type Validation struct {
validate *validator.Validate
}
// NewValidation 创建一个新的 Validation 类型
func NewValidation() *Validation {
validate := validator.New()
validate.RegisterValidation("sku", validateSKU)
return &Validation{validate}
}
这段代码中,创建了一个名为Validation的结构体,其中包含一个指向validator.Validate类型的指针。在NewValidation函数中,首先创建了一个validator.Validate类型的实例validate,然后通过validate.RegisterValidation方法注册了一个名为"sku"的验证函数validateSKU。最后,将validate指针赋值给Validation结构体的validate字段,并返回Validation类型的指针。
这种设计可能有以下潜在目的:
- 将验证器作为指针传递,可以在不同的函数或模块之间共享同一个验证器实例,避免了重复创建验证器的开销。
- 通过将验证器作为指针传递,可以在不同的地方对验证器进行修改或扩展,而不需要修改函数签名或结构体定义。
- 通过将验证器作为指针传递,可以在其他函数中访问和使用验证器的方法和属性。
总之,使用指针作为验证器的设计可能是为了提高代码的可重用性、可扩展性和灵活性。
英文:
I saw a tutorial on internet and it created a validator as a pointer but never explained. Is there any underlying purpose of doing this?
// Validation contains
type Validation struct {
validate *validator.Validate
}
// NewValidation creates a new Validation type
func NewValidation() *Validation {
validate := validator.New()
validate.RegisterValidation("sku", validateSKU)
return &Validation{validate}
}
答案1
得分: 0
它返回具有默认值的Validate结构体的指针,并且其类型为*validator.Validate
。
validate := validator.New()
func New() *Validate { }
英文:
It is returning the pointer of Validate struct with the default values. and it is type of *validator.Validate
validate := validator.New()
func New() *Validate { }
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论