如何检测接口{}是否为指针?

时间:2015-10-09 03:32:45

标签: pointers go

我想知道你怎么知道接口是否是类型指针。

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 个答案:

答案 0 :(得分:6)

如果您已经知道类型,请使用类型开关:

switch v.(type) {
case *str:
    return "*str"
case str:
    return "str"
}

如果不这样做,那么您可以使用if reflect.TypeOf(v).Kind() == reflect.Ptr {}

playground