我在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/