英文:
How to detect if an interface{} is a pointer?
问题
我想知道如何判断接口是否为指针类型。
package main
import "fmt"
import "reflect"
type str struct {
a, b string
}
func main() {
var s str
x := &s
t := reflect.TypeOf(interface{}(x))
fmt.Printf("%v", t.Size())
}
英文:
I'm wondering how can you know if the interface is of type pointer.
package main
import "fmt"
import "reflect"
type str struct {
a, b string
}
func main() {
var s str
x := &s
t := reflect.TypeOf(interface{}(x))
fmt.Printf("%v", t.Size())
}
答案1
得分: 6
如果你已经知道类型,可以使用类型开关(type switch):
switch v.(type) {
case *str:
return "*str"
case str:
return "str"
}
如果你不知道类型,可以使用 if reflect.TypeOf(v).Kind() == reflect.Ptr {}
英文:
Use a type switch if you already know the type(s):
switch v.(type) {
case *str:
return "*str"
case str:
return "str"
}
If you don't, then you can use if reflect.TypeOf(v).Kind() == reflect.Ptr {}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论