code: func GetFieldKind(obj interface{}, name string) (reflect.Kind, error) {
  	if !hasValidType(obj, []reflect.Kind{reflect.Struct, reflect.Ptr}) {
  		return reflect.Invalid, errors.New("Cannot use GetField on a non-struct interface")
  	}
  
  	objValue := reflectValue(obj)
  	field := objValue.FieldByName(name)
  
  	if !field.IsValid() {
  		return reflect.Invalid, fmt.Errorf("No such field: %s in obj", name)
  	}
  
  	return field.Type().Kind(), nil
  }
docs: // GetFieldKind returns the kind of the provided obj field. obj can whether
  // be a structure or pointer to structure.