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.