这些各种验证库如何将这种元数据添加到以下结构中:

type Post struct {
    Title    string `valid:"alphanum,required"`
    Message  string `valid:"duck,ascii"`
    AuthorIP string `valid:"ipv4"`
    Date     string `valid:"-"`
}

我很困惑,属性是标题,类型是字符串。除此之外,您如何只添加valid:"alphanum,required"这是使用反射吗?

这就像其他语言中的属性吗?
[Required]
public int Title { get;set; }

最佳答案

Go没有一般意义上的属性。结构中的字符串是struct tags:



您不能添加或更改它们,但是可以使用 reflect 软件包来访问它们。

看起来像属性的另一件事是“魔术注释”,例如

// +build amd64

或者
//go:noinline

这些是特定于编译器的,并且IIRC并非语言规范的一部分。

关于validation - Golang是否允许使用元数据或属性?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35205421/

10-17 00:17