亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

迭代 Struct 中的字符串字段

迭代 Struct 中的字符串字段

Go
鳳凰求蠱 2021-07-16 16:10:55
我在尋找一個struct的字符串字段遍歷,所以我可以做一些清理/驗證(與strings.TrimSpace,strings.Trim等)?,F在我有一個雜亂的開關盒,它不是真正可擴展的,而且由于它不在我的應用程序(Web 表單)的熱點中,因此reflect在這里利用似乎是一個不錯的選擇。然而,我在如何實現這一點上遇到了一些障礙,反射文檔讓我有點困惑(我一直在研究其他一些驗證包,但它們太重量級了 + 我正在使用解組部分的大猩猩/模式已經):遍歷結構對于字符串類型的每個字段,從strings包中應用我需要的任何內容,即field = strings.TrimSpace(field)如果存在 field.Tag.Get("max"),我們將使用該值(strconv.Atoi,然后是 unicode.RuneCountInString)提供一個也與錯誤接口類型兼容的錯誤切片type FormError []string         type Listing struct {        Title string `max:"50"`        Location string `max:"100"`        Description string `max:"10000"`        ExpiryDate time.Time        RenderedDesc template.HTML        Contact string `max:"255"`    }    // Iterate over our struct, fix whitespace/formatting where possible    // and return errors encountered    func (l *Listing) Validate() error {       typ := l.Elem().Type()       var invalid FormError       for i = 0; i < typ.NumField(); i++ {           // Iterate over fields           // For StructFields of type string, field = strings.TrimSpace(field)           // if field.Tag.Get("max") != "" {           //     check max length/convert to int/utf8.RuneCountInString                  if max length exceeded, invalid = append(invalid, "errormsg")       }       if len(invalid) > 0 {           return invalid       }        return nil   }   func (f FormError) Error() string {       var fullError string       for _, v := range f {           fullError =+ v + "\n"       }       return "Errors were encountered during form processing: " + fullError   }
查看完整描述

3 回答

  • 3 回答
  • 0 關注
  • 225 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號