gpt4 book ai didi

go - 在 Go 中创建具有约束的自定义类型

转载 作者:IT王子 更新时间:2023-10-29 02:25:40 25 4
gpt4 key购买 nike

如何在 Go 中创建一个只能接受有效值的自定义类型?例如,我想创建一个名为“Names”的类型,其中它的基础类型是一个字符串。但是它只能接受值“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)
}

关于go - 在 Go 中创建具有约束的自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18992930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com