我在 Golang 中使用 iota 定义了以下类型。
type StatusType int
const (
PENDING StatusType = iota
APPROVED
REJECTED
)
我想将 REST-API 中传递的值限制为 StatusType。这样该值不应超过 0,1,2。
最佳答案
我是这样做的:
首先创建一个名为“StatusType”的包(在名为 StatusType 的文件夹内):
文件名:$GOPATH/enum/StatusType/StatusType.go
package StatusType
type Int int
const (
Pending Int = iota
Approved
Rejected
end
)
func IsValid(value int) bool {
return value < int(end)
}
并像这样使用($GOPATH/enum/main.go):
package main
import (
"enum/StatusType"
"fmt"
)
func Test(enum StatusType.Int) {
fmt.Println(enum) //1
}
func main() {
Test(StatusType.Approved)
fmt.Println(StatusType.IsValid(1)) //true
fmt.Println(StatusType.IsValid(10)) //false
}
StatusType 包只导出您需要的内容,因此无需检查 iota const 范围。
以防万一您想检查,请使用:StatusType.IsValid()
StatusType 包的好处是:
当你想要StatusType类型的函数参数时,使用StatusType.Int,它表明它是int类型的枚举。
喜欢:
Test(StatusType.Approved)
关于go - 如何在Golang中检查值是否为iota常量类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37496098/