当前位置: 首页 > 知识库问答 >
问题:

如何检查该值是否为Golang中的iota型常数?

裘嘉木
2023-03-14

我在Golang中使用iota定义了以下类型。

type StatusType int

const (
    PENDING StatusType = iota
    APPROVED
    REJECTED
)

我想将REST-API中传递的值限制为statusType。使得该值不应超过0,1,2。

共有1个答案

嵇丰
2023-03-14

我是这样做的:
首先创建一个名为“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)
 类似资料:
  • 问题内容: 我需要检查值是否为整数。我发现了这一点:如何检查输入值是整数还是浮点数?,但如果我没记错的话,即使 值 本身确实是,变量仍然是类型。 问题答案: 如果输入值可以是整数以外的其他数字形式,请按 如果传递字符串值, 请使用,请确保在转换失败的情况下使用try catch进行错误处理。

  • 问题内容: 我看到在MySQL中,有和函数可以从值创建整数,但是有什么方法可以检查值是否是整数?我正在寻找PHP中类似的东西。 问题答案: 我假设您要检查一个字符串值。一种不错的方法是REGEXP运算符,将字符串与正则表达式匹配。简单地做 这相当快。如果您的字段是数字,则只需测试 代替。

  • 问题内容: 在Python Pandas中,检查DataFrame是否具有一个(或多个)NaN值的最佳方法是什么? 我知道函数,但是这会为每个元素返回一个布尔值的DataFrame。此处的帖子也无法完全回答我的问题。 问题答案: jwilner的反应是现场的。我一直在探索是否有更快的选择,因为根据我的经验,求平面数组的总和(奇怪)比计数快。这段代码似乎更快: 速度稍慢,但当然还有其他信息-的数量。

  • 问题内容: 我有一列包含数字和其他字符串值(例如“?”,“ ???”等) 是否可以在SQLite的where子句中添加“ is number”条件?就像是: 问题答案: 从文档中, typeof(X)函数返回一个字符串,该字符串指示表达式X的数据类型:“ null”,“ integer”,“ real”,“ text”或“ blob”。 您可以使用

  • 在Python Pandas中,检查DataFrame是否有一个(或多个)NaN值的最佳方法是什么? 我知道函数,但它为每个元素返回布尔值的数据集。这里的这篇文章也没有完全回答我的问题。

  • 问题内容: 我试图找到最大的立方根,即整数,小于12,000。 我不确定如何检查它是否是整数!我可以将其转换为字符串,然后使用索引来检查最终值,看看它们是否为零,但这似乎很麻烦。有没有更简单的方法? 问题答案: 要检查浮点值是否为整数,请使用以下方法: 该方法已添加到Python 2.6中的类型中。 请考虑在Python 2中为(整数操作数的底数除法!),并且浮点算术可能不精确(a是使用二进制分数