如何在只能接受有效值的Go中创建自定义类型?例如,我希望创建一个名为"Names“的类型,其中它的基础类型是一个字符串。然而,它只能接受“约翰”、“罗伯”或“保罗”的价值观。任何其他值都将返回一个错误。我以一种非常简单的方式创建了下面的程序,以表示我想要实现的目标。
http://play.golang.org/p/jzZwALsiXz
编写这段代码的最佳方法是什么?
发布于 2013-09-24 22:28:15
您可以这样做(-):
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)
}https://stackoverflow.com/questions/18992930
复制相似问题