首页 > 解决方案 > 使字段仅允许某些字符串

问题描述

我有一个带有可用性字段的类型,它可以是三个值之一,“可用”,“不可用”,两者都不是。

type Something struct {
    Name string `json:"Name" yaml:"name"`
    status string `json:"-" yaml:"status"`
}

该类型是从一个 yaml 构建的,它可以具有如下输入:

- name: "standard_thing"
  status: "standard"
- name: "premium_thing"
  status: "premium"
- name: "random_thing

我正在尝试考虑拥有此状态字段的最佳方式,因此很明显有两个选项或空白。使用布尔值不起作用,因为可以通过这种方式区分没有状态的对象,实际上我特别希望该字段是可选的,因此元素匹配不会在没有该字段的现有条目上中断分贝。
真正做到这一点的唯一方法是使用字符串,然后对字符串进行某种验证。还是使用带有几个布尔值的不同状态类型更好,尽管在 yaml 中看起来很乱,可能是布尔指针或以某种方式别名布尔值?有没有办法使用可以作为字符串输入的枚举来处理该验证?我想做类似的事情

type status string

const (
   premium status = "premium"
   standard status = "standard"
)

要锁定两个输入字符串,我知道上面的方法不起作用,但想知道是否有一些惯用的方式来提供 YAML 不需要数字输入的字符串选项/枚举?

标签: stringgotypesenums

解决方案


推荐阅读