Retrieving Field Name & Value in Struct
We can use reflect package for retrieving field name and value dynamically from a struct.
package main
import (
    "fmt"
    "reflect"
)
type Foo struct {
  aa string
  ff string
}
func main() {
    foo := Foo{"x", "y"}
    t := reflect.TypeOf(foo)         // => Returns a type Type
    fmt.Println(t.Field(0).Name)     // => "aa"
    r := reflect.ValueOf(foo)
    fmt.Println(r.Field(0))          // => "x"
    fmt.Println(r.FieldByName("aa")) // => "x"
}
In this way we can save the name to a variable and use it to retrieve value:
field := t.Field(0).Name
value := r.FieldByName(field)
An example in play

