time.Time 的意外輸出:揭秘"m= " 字串
當Go 程式執行time.Now() 函數時,它檢索當前時間戳。此時間戳記的預設輸出隨著時間的推移而演變,特別是隨著 Go 1.9 的發布。
“m=” Enigma
在舊版本的Go 中,時間.Now() 將輸出以下格式的字串:
2018-07-04 12:03:07.2911671 +0530 IST
但是,在Go 1.9及更高版本中,輸出已擴展為包含一個神秘的“m=”字串:
2018-07-04 12:03:07.2911671 +0800 +08 m=+0.002000201
為什麼會出現差異?這是由於 Go 1.9 中新增了單調時鐘支援。 “m=”字串表示自程式啟動以來的單調時間,以浮點數秒數表示。
使用Format() 避免格式意外
建議使用Format() 函數指定時間戳記的自訂格式,而不是依賴time.Now() 的預設輸出。例如:
import ( "fmt" "time" ) func main() { t := time.Now() fmt.Println(t.Format("2006-01-02 15:04:05.000000")) }
無論Go 版本如何,這都會以一致的格式輸出時間戳:
2018-07-04 12:03:07.2911671
透過使用Format(),您可以確保您的程式始終輸出時間戳採用您期望的格式。
以上是為什麼 Go 的 `time.Now()` 輸出在後續版本中包含「m=」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!