Home >Backend Development >Golang >How to Retrieve the `reflect.Type` of an Interface in Go?
Retrieving the Reflect.Type of an Interface
Determining whether a type implements an interface through the reflect package entails passing a reflect.Type to reflect.Type.Implements(). This article explores the process of obtaining such types.
Obtaining the Type of an Uninitialized Interface
Attempting to retrieve the type of an uninitialized error interface (which is an interface type) using reflect.TypeOf() directly will result in a panic when attempting to access the Kind() method of the obtained type. To circumvent this issue, the following approaches can be employed:
Approach 1:
var err error t := reflect.TypeOf(&err).Elem()
This approach involves obtaining the type of a pointer to the interface, and then retrieving the underlying concrete type (element) using Elem().
Approach 2 (One-Liner):
t := reflect.TypeOf((*error)(nil)).Elem()
This approach leverages the fact that a nil interface value can be type asserted to any interface type. By creating a nil pointer to the desired interface type and retrieving its type, you can directly obtain the concrete type without having to take the address of the variable.
The above is the detailed content of How to Retrieve the `reflect.Type` of an Interface in Go?. For more information, please follow other related articles on the PHP Chinese website!