gpt4 book ai didi

Go - 如何检查类型相等性?

转载 作者:行者123 更新时间:2023-12-02 14:50:46 24 4
gpt4 key购买 nike

假设我有以下代码:

var x interface{}
y := 4
x = y
fmt.Println(reflect.TypeOf(x))

这将打印 int 作为类型。我的问题是如何测试该类型?我知道有类型开关可以做到这一点,所以我可以这样做:

switch x.(type) {
case int:
fmt.Println("This is an int")
}

但是,如果我只想检查一种特定类型,那么该开关似乎是错误的工具。有没有更直接的方法来做到这一点

reflect.TypeOf(x) == int

或者类型开关才是正确的选择?

最佳答案

类型断言返回两个值..第一个是转换后的值,第二个是 bool 值,指示类型断言是否正常工作。

所以你可以这样做:

_, ok := x.(int)

if ok {
fmt.Println("Its an int")
} else {
fmt.Println("Its NOT an int")
}

..或者,简写:

if _, ok := x.(int); ok {
fmt.Println("Its an int")
}

See it in the playground

关于Go - 如何检查类型相等性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29444817/

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