Reflection Basics
Value Inspection
reflect.Value lets a program inspect a value without knowing its concrete type at compile time.
Value Inspection
value_inspection.go
package main
import (
"fmt"
"reflect"
)
func main() {
var count =
value := reflect.ValueOf(count)
kind := value.Kind()
asInt := value.Int()
isEven := asInt%2 == 0
fmt.Println("count=", count)
fmt.Println("kind=", kind.String())
fmt.Println("as_int=", asInt)
fmt.Println("is_even=", isEven)
}
package main
import (
"fmt"
"reflect"
)
func main() {
var count =
value := reflect.ValueOf(count)
kind := value.Kind()
asInt := value.Int()
isEven := asInt%2 == 0
fmt.Println("count=", count)
fmt.Println("kind=", kind.String())
fmt.Println("as_int=", asInt)
fmt.Println("is_even=", isEven)
}
package main
import (
"fmt"
"reflect"
)
func main() {
var count =
value := reflect.ValueOf(count)
kind := value.Kind()
asInt := value.Int()
isEven := asInt%2 == 0
fmt.Println("count=", count)
fmt.Println("kind=", kind.String())
fmt.Println("as_int=", asInt)
fmt.Println("is_even=", isEven)
}
value
`reflect.ValueOf` can read facts about a value. Convert through typed accessors only after checking the kind.