Quick actions

cmd+k|ctrl+k

Navigation

Languages

Reflection / Pointers / Essential Go

Snippet info

Language

Go

Visibility

public

Author

kkowalczyk

Created

2019-03-26T10:16:57Z

Updated

2019-03-26T10:16:57Z

package main

import (
	"fmt"
	"reflect"
)

func printIntResolvingPointers(v interface{}) {
	rv := reflect.ValueOf(v)
	typeName := rv.Type().String()
	name := ""
	for rv.Kind() == reflect.Ptr {
		name = "pointer to " + name
		rv = rv.Elem()
	}
	name += rv.Type().String()
	fmt.Printf("Value: %d. Type: '%s' i.e. '%s'.\n\n", rv.Int(), name, typeName)
}

func main() {
	n := 3
	printIntResolvingPointers(n)

	n = 4
	printIntResolvingPointers(&n)

	n = 5
	np := &n
	printIntResolvingPointers(&np)
}
INFO