Go language provides inbuilt support implementation of run-time reflection and allowing a program to manipulate objects with arbitrary types with the help of reflect package. The reflect.Indirect() Function in Golang is used to get the value that v points to, i.e., If v is a nil pointer, Indirect returns a zero Value. If v is not a pointer, Indirect returns v. To access this function, one needs to imports the reflect package in the program.
Syntax:
func Indirect(v Value) Value
Parameters: This function takes the following parameters:
- v: This parameter is the value to be passed.
Return Value: This function returns the value that v points to.
Below examples illustrate the use of the above method in Golang:
Example 1:
package main
import (
"fmt"
"reflect"
)
func main() {
val1:= [] int {1, 2, 3, 4}
var val2 reflect.Value = reflect.ValueOf(&val1)
fmt.Println( "&val2 type : " , val2.Kind())
indirectI := reflect.Indirect(val2)
fmt.Println( "indirectI type : " , indirectI.Kind())
fmt.Println( "indirectI value : " , indirectI)
}
|
Output:
&val2 type : ptr
indirectI type : slice
indirectI value : [1 2 3 4]
Example 2:
package main
import (
"fmt"
"reflect"
)
func main() {
var val1 [] int
var val2 [3]string
var val3 = make(map[ int ]string)
var val4 reflect.Value = reflect.ValueOf(&val1)
indirectI := reflect.Indirect(val4)
fmt.Println( "val1: " , indirectI.Kind())
var val5 reflect.Value = reflect.ValueOf(&val2)
indirectStr := reflect.Indirect(val5)
fmt.Println( "val2 type : " , indirectStr.Kind())
var val6 reflect.Value = reflect.ValueOf(&val3)
fmt.Println( "&val3 type : " , val6.Kind())
indirectM := reflect.Indirect(val6)
fmt.Println( "val3 type : " , indirectM.Kind())
}
|
Output:
val1: slice
val2 type : array
&val3 type : ptr
val3 type : map
Whether you're preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape,
GeeksforGeeks Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we've already empowered, and we're here to do the same for you. Don't miss out -
check it out now!