func GetFieldValue(v interface{}, field string) (r string) {
	var immutable reflect.Value
	immutable = GetReflectValue(v)
	val := immutable.FieldByName(field)
	switch val.Kind() {
	case reflect.Int64, reflect.Int32, reflect.Int:
		r = fmt.Sprintf("%d", val.Int())
	case reflect.Float64, reflect.Float32:
		r = fmt.Sprintf("%.2f", val.Float())
	default:
		// process time
		vi := val.Interface()
		if vc, ok := vi.(time.Time); ok {
			r = FormatTime(vc)
			break
		}
		r = fmt.Sprintf("%v", val)
	}
	return
}
// GetFieldValue v can be struct or pointer.
GetFieldValue v can be struct or pointer.
// GetFieldValue v can be struct or pointer .
func GetFieldValue(v interface{}, field string) (r string) {
	var immutable reflect.Value
	immutable = GetReflectValue(v)
	val := immutable.FieldByName(field)
	switch val.Kind() {
	case reflect.Int64, reflect.Int32, reflect.Int:
		r = fmt.Sprintf("%d", val.Int())
	case reflect.Float64, reflect.Float32:
		r = fmt.Sprintf("%.2f", val.Float())
	default:
		vi := val.Interface()
		if vc, ok := vi.(time.Time); ok {
			r = FormatTime(vc)
			break
		}
		r = fmt.Sprintf("%v", val)
	}
	return
}
func GetFieldValue ( v interface { } , field string ) ( r string ) { var immutable reflect . Value immutable = GetReflectValue ( v ) val := immutable . FieldByName ( field ) switch val . Kind ( ) { case reflect . Int64 , reflect . Int32 , reflect . Int : r = fmt . Sprintf ( " " , val . Int ( ) ) case reflect . Float64 , reflect . Float32 : r = fmt . Sprintf ( " " , val . Float ( ) ) default : vi := val . Interface ( ) if vc , ok := vi . ( time . Time ) ; ok { r = FormatTime ( vc ) break } r = fmt . Sprintf ( " " , val ) } return }
GetFieldValue v can be struct or pointer.
GetFieldValue v can be struct or pointer .
// process time