Unerwartete Ausgabe von time.Time: Entmystifizierung des „m=“-Strings
Wenn ein Go-Programm die Funktion time.Now() ausführt , ruft es den aktuellen Zeitstempel ab. Die Standardausgabe dieses Zeitstempels hat sich im Laufe der Zeit weiterentwickelt, insbesondere mit der Veröffentlichung von Go 1.9.
Das „m=“-Enigma
In älteren Versionen von Go die Zeit .Now() würde eine Zeichenfolge im folgenden Format ausgeben:
2018-07-04 12:03:07.2911671 +0530 IST
In Go 1.9 und höher war die Ausgabe jedoch erweitert um eine mysteriöse „m=“-Zeichenfolge:
2018-07-04 12:03:07.2911671 +0800 +08 m=+0.002000201
Warum die Diskrepanz? Dies ist auf die zusätzliche Unterstützung monotoner Uhren in Go 1.9 zurückzuführen. Die Zeichenfolge „m=“ stellt die monotone Zeit seit dem Start des Programms dar, ausgedrückt als Gleitkommazahl in Sekunden.
Vermeiden Sie Formatüberraschungen mit Format()
Anstatt sich auf die Standardausgabe von time.Now() zu verlassen, wird empfohlen, die Funktion Format() zu verwenden, um ein benutzerdefiniertes Format für den Zeitstempel anzugeben. Zum Beispiel:
import ( "fmt" "time" ) func main() { t := time.Now() fmt.Println(t.Format("2006-01-02 15:04:05.000000")) }
Dadurch wird der Zeitstempel unabhängig von der Go-Version in einem konsistenten Format ausgegeben:
2018-07-04 12:03:07.2911671
Durch die Verwendung von Format() können Sie sicherstellen, dass Ihre Programme immer ausgeben Zeitstempel im erwarteten Format.
Das obige ist der detaillierte Inhalt vonWarum enthält die „time.Now()'-Ausgabe von Go in späteren Versionen „m='?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!