Function 如何为函数设置限制或只注意提示';s论点

Function 如何为函数设置限制或只注意提示';s论点,function,go,types,arguments,Function,Go,Types,Arguments,如何像下面这样设置参数限制 //一, func ChooseColor(color string:"black|white" ) { fmt.Println(color) } ChooseColor("white") // console "white" ChooseColor("yellow") // console panic 如果您觉得noob无法理解上述解决方案,请参见下文 //二, /** * ar

如何像下面这样设置参数限制

//一,

func ChooseColor(color string:"black|white" ) {
  fmt.Println(color)
}

ChooseColor("white") // console "white"
ChooseColor("yellow") // console panic
如果您觉得noob无法理解上述解决方案,请参见下文

//二,

/**
* arg: "black|white"
*
*/
func ChooseColor(color string) {
  fmt.Println(color)
}

ChooseColor(  ) // IDE can notice "color: black || white"

请帮助我(T.T)

您可以创建您的类型
颜色
,并具有此类型的常量。像这样的

type Color string

const (
    ColorBlack Color = "black"
    ColorWhite Color = "white"
)

func ChooseColor(color Color) {
    fmt.Println(color)
}

这是
1的解决方案。
。如果给定的参数不是预期的参数,则函数将崩溃

func ChooseColor(color string) {
    switch color {
    case "white", "black":
        fmt.Println(color)
    default:
        panic(color)
    }
}
2.
很可能由Bakurits回答。这使IDE能够捕获将传递给该函数的数据类型

type Color bool

const (
    ColorBlack Color = true
    ColorWhite Color = false
)

func ChooseColor(color Color) {
    if color {
        fmt.Println("black")
    } else {
        fmt.Println("white")
    }
}
要做到这一点,godoc的“Go”方法是:

//ChooseColor选择一种颜色。有效颜色为:黑色、白色。
func ChooseColor(颜色字符串){
如果颜色!=“黑色”&&color!=“白色”{
/*处理错误条件*/
}
/* ... */
}

这将出现在大多数IDE中。

可能会将类型更改为int以容纳更大的池?@Kisinga然后它将允许函数的参数不是“黑”和“白”。键入
bool
强制用户在运行前从中进行选择。我认为
1.
要求在运行时进行异常处理,
2.
更多的是关于静态类型检查。无论哪种方法,您都可以提供true或false,因为底层类型是bool,函数仍然有效。IMHO将其更改为int将只允许定义更多颜色,而不是黑白,同时保持类型安全。如果类型未导出,则包的用户不可能创建意外值。