code: func GetFieldTag(obj interface{}, fieldName, tagKey string) (string, error) {
  	if !hasValidType(obj, []reflect.Kind{reflect.Struct, reflect.Ptr}) {
  		return "", errors.New("Cannot use GetField on a non-struct interface")
  	}
  
  	objValue := reflectValue(obj)
  	objType := objValue.Type()
  
  	field, ok := objType.FieldByName(fieldName)
  	if !ok {
  		return "", fmt.Errorf("No such field: %s in obj", fieldName)
  	}
  
  	if !isExportableField(field) {
  		return "", errors.New("Cannot GetFieldTag on a non-exported struct field")
  	}
  
  	return field.Tag.Get(tagKey), nil
  }
docs: // GetFieldTag returns the provided obj field tag value. obj can whether
  // be a structure or pointer to structure.