Okay, die meisten von ihnen haben dir etwas Gutes gezeigt. Lass mich dir etwas geben:
// ToString Ändere arg in einen String
func ToString(arg interface{}, timeFormat ...string) string {
if len(timeFormat) > 1 {
log.SetFlags(log.Llongfile | log.LstdFlags)
log.Println(errors.New(fmt.Sprintf("Die Länge von timeFormat sollte eins sein")))
}
var tmp = reflect.Indirect(reflect.ValueOf(arg)).Interface()
switch v := tmp.(type) {
case int:
return strconv.Itoa(v)
case int8:
return strconv.FormatInt(int64(v), 10)
case int16:
return strconv.FormatInt(int64(v), 10)
case int32:
return strconv.FormatInt(int64(v), 10)
case int64:
return strconv.FormatInt(v, 10)
case string:
return v
case float32:
return strconv.FormatFloat(float64(v), 'f', -1, 32)
case float64:
return strconv.FormatFloat(v, 'f', -1, 64)
case time.Time:
if len(timeFormat) == 1 {
return v.Format(timeFormat[0])
}
return v.Format("2006-01-02 15:04:05")
case jsoncrack.Time:
if len(timeFormat) == 1 {
return v.Time().Format(timeFormat[0])
}
return v.Time().Format("2006-01-02 15:04:05")
case fmt.Stringer:
return v.String()
case reflect.Value:
return ToString(v.Interface(), timeFormat...)
default:
return ""
}
}
0 Stimmen
Die zweite Frage (Zeichenkettenverknüpfung) hat eine Antwort anderswo, die Effizienz behandelt.
0 Stimmen
strconv.Itoa(i)
(int to ASCII), um eine Ganzzahl in einen String zu setzen. Siehe stackoverflow.com/a/62737936/12817546.strconv.Atoi(s)
(ASCII zu int), um einen String in eine Ganzzahl umzuwandeln. Siehe stackoverflow.com/a/62740786/12817546.