首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Go中创建带有约束的自定义类型

在Go中创建带有约束的自定义类型
EN

Stack Overflow用户
提问于 2013-09-24 22:06:50
回答 1查看 4.1K关注 0票数 1

如何在只能接受有效值的Go中创建自定义类型?例如,我希望创建一个名为"Names“的类型,其中它的基础类型是一个字符串。然而,它只能接受“约翰”、“罗伯”或“保罗”的价值观。任何其他值都将返回一个错误。我以一种非常简单的方式创建了下面的程序,以表示我想要实现的目标。

http://play.golang.org/p/jzZwALsiXz

编写这段代码的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-24 22:28:15

您可以这样做(-):

代码语言:javascript
复制
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):

代码语言:javascript
复制
type Name string

func (n Name) String() string {
    switch n {
    case "John":
    case "Paul":
    case "Rob":
    default:
        return "Error: Wrong value"
    }
    return string(n)
}
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18992930

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档