为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的 struct 方法总是返回 false?

为什么我的 struct 方法总是返回 false?

Go
潇湘沐 2021-12-07 15:14:42
我正在尝试在返回 bool 的方法中对我的表单结构进行验证,但即使它应该返回 true ,我也会不断收到 false ..如果您查看Validate方法的末尾,您会看到我写了validated := len(this.Errors) == 0哪些应该根据 Errors 映射是否包含项目来使“验证”为真或假,然后是 I return validated.当我准确填写表格时,应该没有错误,但是当我应该正确时我仍然会出错。有人可以解释一下吗?这不是 Go 的工作方式吗?表单.go:package modelsimport (    "../config"    "../util")type Form struct {    Name    string    Email   string    Phone   string    Message string    Thanks  string    ErrorHandler}func (this *Form) Validate() bool {    this.Errors = make(map[string]string)    matched := util.MatchRegexp(".+@.+\\..+", this.Email)    if !util.IsEmpty(this.Email) {        if matched == false {            this.Errors["Email"] = config.EMAIL_INVALID        }    } else {        this.Errors["Email"] = config.EMAIL_EMPTY    }    if util.IsEmpty(this.Name) {        this.Errors["Name"] = config.NAME_EMPTY    }    if util.IsEmpty(this.Phone) {        this.Errors["Phone"] = config.PHONE_EMPTY    }    if util.IsEmpty(this.Message) {        this.Errors["Message"] = config.MESSAGE_EMPTY    }    validated := len(this.Errors) == 0    if validated {        this.Thanks = config.THANK_YOU    }    return validated}errorhandler.go:package modelstype ErrorHandler struct {    Errors map[string]string}func (this *ErrorHandler) HandleErr(err string) {    this.Errors = make(map[string]string)    this.Errors["Error"] = err}这就是我尝试调用该Validate方法的地方——在我的控制器中的一个函数中:form := &models.Form{    Name:    r.FormValue("name"),    Email:   r.FormValue("email"),    Phone:   r.FormValue("phone"),    Message: r.FormValue("message")}if form.Validate() {    // This never runs because 'form.Validate()' is always false}我不认为这util.IsEmpty()是这里的罪魁祸首..只是检查字符串是否为空:func IsEmpty(str string) bool {    return strings.TrimSpace(str) == ""}任何帮助,将不胜感激!
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

最好使用如下日志语句调试此类问题:

log.Printf("form: %v", form)

在调用之前validate,所以很清楚输入数据的样子。

问候, 菲利普


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 158 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信