[这个问题主要是关于化妆品,此代码确实可以完成预期的工作,但是我很希望能够在两种情况下都使用switch
语句,而不是混合使用if
和switch
。
func fieldValue(field reflect.Value) string {
format := "%v"
if stringer, ok := field.Interface().(strfmt.DateTime); ok {
return fmt.Sprintf(format, stringer.String())
}
switch field.Kind() {
case reflect.Ptr:
if field.IsNil() {
return "<nil>"
}
field = field.Elem()
}
return fmt.Sprintf(format, field.Interface())
}
您最能做的是:
func isDateTime(field reflect.Value) bool {
_, result := field.Interface().(strfmt.DateTime)
return result
}
func fieldValue(field reflect.Value) string {
switch {
case isDateTime(field):
return field.Interface().(strfmt.DateTime).String()
case field.Kind() == reflect.Ptr:
if field.IsNil() {
return "<nil>"
}
field = field.Elem()
fallthrough
default:
return fmt.Sprintf("%v", field.Interface())
}
}