如何在Go中创建只能接受有效值的自定义类型?例如,我要创建一个名为“名称”的类型,其基础类型为字符串。但是,它只能接受值“ John”,“ Rob”或“
Paul”。其他任何值都将返回错误。我已经以非常简单的方式创建了以下程序,以表示我想要实现的目标。
http://play.golang.org/p/jzZwALsiXz
编写此代码的最佳方法是什么?
您可以执行以下操作(http://play.golang.org/p/JaIr_0a5_-):
type Name struct {
string
}
func (n *Name) String() string {
return n.string
}
func NewName(name string) (*Name, error) {
switch name {
case "John":
case "Paul":
case "Rob":
default:
return nil, fmt.Errorf("Wrong value")
}
return &Name{string: name}, nil
}
Golang不提供运算符重载,因此您无法在投射或影响值时进行检查。
根据您要尝试执行的操作,可能需要执行以下操作(http://play.golang.org/p/uXtnHKNRxk):
type Name string
func (n Name) String() string {
switch n {
case "John":
case "Paul":
case "Rob":
default:
return "Error: Wrong value"
}
return string(n)
}
我目前正试图用Gekko的分支来解决一个混合整数非线性问题 以下是我迄今为止的尝试:
我在项目中使用bean验证,我想为现有的约束注释编写一个自定义验证器。 例如,我有一个类,它表示一个名为CustomDateTime的日期/时间。在使用此类作为例如出生日期的类中,我想用过去的日期对字段进行注释: 然后,我通过实现ConstraintValidator创建一个自定义验证器 我知道您通常会创建这样的单独注释: 但对我来说,这似乎是双重代码;-) 如何注册要与一起使用的自定义验证器?
我有一个自定义注释@UniqueModel,它由ConstraintValidator验证: 问题是,我需要在调用存储库的safe()-方法之前进行验证,否则字段注入将无法工作。 因此,我创建了一个带有@Valid注释的委托方法,以便在以下情况之前强制进行唯一验证: 不幸的是,这不起作用,似乎@Valid注释被Spring忽略了。 我如何确保验证的正确时间?
Youtrack上有几种类型,如OwnedField[1]、Group[1]等。 是否可以创建一个自定义类型,该类型具有自定义字段,如ownedField具有链接到用户的自定义字段? 我们希望将类似的行为应用于ownedField,其中,当您选择一个子系统字段(类型为ownedField)时,它会“自动”用与该子系统关联的用户填充问题的字段“受理人”。
该到你发挥创意的时间了。你已经知道了各种不同的 Puppet 资源类型: 包(package), 文件(file)、用户(user),等等。 通常情况下,你既可以组合使用这些内置资源类型做你需要做的一切, 又可以通过一个自定义 define 作为一种资源(以内置资源同样的方式)来使用 (参见第 4 章 书写更优质的配置清单 中有关 define 的内容)。 但是,如果你需要创建自己的资源类型,Pu
我已经为此斗争了好几天,我已经阅读了这里的所有讨论,但没有解决方案...... 我有一个自定义约束… 独一无二.java 这是由UniqueConstraintValidator使用的.java 现在,我的模型有这个注释,我需要在其中验证字段的唯一性 现在,我知道自定义注释在更新现有对象时不起作用,但是现在我需要了解它是如何工作的。假设我们想要添加一个新对象。 当我试图保存一个已经存在的值时,我得