我正在嘗試在返回 bool 的方法中對我的表單結(jié)構(gòu)進(jìn)行驗(yàn)證,但即使它應(yīng)該返回 true ,我也會不斷收到 false ..如果您查看Validate方法的末尾,您會看到我寫了validated := len(this.Errors) == 0哪些應(yīng)該根據(jù) Errors 映射是否包含項(xiàng)目來使“驗(yàn)證”為真或假,然后是 I return validated.當(dāng)我準(zhǔn)確填寫表格時(shí),應(yīng)該沒有錯(cuò)誤,但是當(dāng)我應(yīng)該正確時(shí)我仍然會出錯(cuò)。有人可以解釋一下嗎?這不是 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}這就是我嘗試調(diào)用該Validate方法的地方——在我的控制器中的一個(gè)函數(shù)中: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}我不認(rèn)為這util.IsEmpty()是這里的罪魁禍?zhǔn)?.只是檢查字符串是否為空:func IsEmpty(str string) bool { return strings.TrimSpace(str) == ""}任何幫助,將不勝感激!
1 回答

慕妹3146593
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
最好使用如下日志語句調(diào)試此類問題:
log.Printf("form: %v", form)
在調(diào)用之前validate
,所以很清楚輸入數(shù)據(jù)的樣子。
問候, 菲利普
- 1 回答
- 0 關(guān)注
- 180 瀏覽
添加回答
舉報(bào)
0/150
提交
取消