beego validation无效、失效 golang tag标签的一个坑

来看看结构体

这样 自己用table键吧tag标签搞得整整齐齐的

type People struct {
    Key     string `json:"key"         form:"key"         valid:"Required"`         //id值
    Name    string `json:"name"     form:"name"     valid:"Required"`         //名字
    Idcard  string `json:"idcard"     form:"idcard"     valid:"Length(18)"`   //身份证
    Iccard  string `json:"iccard"     form:"iccard"`                       //IC卡号
    Sex     int    `json:"sex"         form:"sex"         valid:"Required;Numeric"` //1男 2女
    Picture string `json:"picture"     form:"picture"     valid:"Base64"`     //照片 base64
}

然后我们反射一下看看结果

package main

import (
    "fmt"
    "reflect"
)

type People struct {
    Key     string `json:"key"         form:"key"         valid:"Required"`         //id值
    Name    string `json:"name"     form:"name"     valid:"Required"`         //名字
    Idcard  string `json:"idcard"     form:"idcard"     valid:"Length(18)"`   //身份证
    Iccard  string `json:"iccard"     form:"iccard"`                       //IC卡号
    Sex     int    `json:"sex"         form:"sex"         valid:"Required;Numeric"` //1男 2女
    Picture string `json:"picture"     form:"picture"     valid:"Base64"`     //照片 base64
}

func main() {

    people := People{
        Key: "ccc",
    }

    t := reflect.TypeOf(people)

    for i := 0; i < t.NumField(); i++ {
        key := t.Field(i)
        valid := key.Tag.Get("valid")
        fmt.Println(valid)
    }

}

果然输出结果是空的

2020-07-23T00:50:54.png2020-07-23T00:50:54.png

然后我们把结构体中的tag标签用空格分开

2020-07-23T00:52:37.png2020-07-23T00:52:37.png

再执行 反射成功!

2020-07-23T00:53:09.png2020-07-23T00:53:09.png


结论:

结构体tag标签中不能使用table键(可以用多个空格键,或者不用空格)