gpt4 book ai didi

arrays - 如何从指向单个对象的指针重新转换指向数组的指针

转载 作者:数据小太阳 更新时间:2023-10-29 03:05:30 24 4
gpt4 key购买 nike

我尝试在我的 porogram 中找到方法,使用 interface{} 作为特定函数的参数,将 beetwen 类型指针解析为指向单个对象的数组形式的指针。这次我使用以下方式得到这个结果:

func object( v interface{}) {
if strings.HasPrefix(reflect.TypeOf(v).String(), "*[]") {
// pointer to array
} else {
// pointer to single object
}
}

以上方法可行,但对我来说这不是干净的代码。我认为存在一些更好的方法来使用 golang 包作为类型来解决这个问题,但现在我不知道如何解决这个问题,所以请您提出建议。

附言。我不想使用 switch statemet 例如:

switch v.(type){
case *[]someType:
// array
default:
// single object
}

这样应该比较通用不依赖于数组的类型对象

最佳答案

使用 reflect.Kind检查你拥有的值(value)类型:

func object(i interface{}) {
v := reflect.ValueOf(i)
switch v.Kind() {
case reflect.Ptr:
fmt.Print("we have a pointer ")
switch v.Elem().Kind() {
case reflect.Slice:
fmt.Println("to a slice")
case reflect.Array:
fmt.Println("to an array")
case reflect.Struct:
fmt.Println("to a struct")
default:
fmt.Println("to unexpected type ", v.Elem().Kind())
}
}
}

https://play.golang.org/p/q32Cfz_dmF

关于arrays - 如何从指向单个对象的指针重新转换指向数组的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40921407/

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