第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang 中的編組/解組時間對象意外失敗

Golang 中的編組/解組時間對象意外失敗

Go
ibeautiful 2023-03-29 16:14:18
解組編組的時間對象失敗,因為有幾個字符測試聲明如下:// valuesnow := time.Now()timeToJSON, _ := json.Marshal(now)var obj time.Timejson.Unmarshal(timeToJSON, &obj)然后執(zhí)行以下測試邏輯:if !assert.Equal(t,    now.String(),    obj.String()) {    t.FailNow()}預(yù)期的測試通過,兩個對象相等實際的它失?。?-- FAIL: TestFromJSON (0.00s)    D:\dev2017\GO\src\ezsoft\apiserver_sdk\model\delete\deleteModel_test.go:94:             Error Trace:    deleteModel_test.go:94            Error:          Not equal:                             expected: "2018-09-04 10:36:18.3627338 -0400 EDT m=+0.014000801"                            actual  : "2018-09-04 10:36:18.3627338 -0400 EDT"                                                        Diff:                            --- Expected                            +++ Actual                            @@ -1 +1 @@                            -2018-09-04 10:36:18.3627338 -0400 EDT m=+0.014000801                            +2018-09-04 10:36:18.3627338 -0400 EDT            Test:           TestFromJSONFAILFAIL    ezsoft/apiserver_sdk/model/delete   1.336sError: Tests failed.筆記我注意到,在檢查輸出時,不知何故,一些m=+[blah]被附加到預(yù)期/實際。但是,我不知道為什么,瀏覽 RFC 3339也沒有給我任何提示。
查看完整描述

2 回答

?
智慧大石

TA貢獻1946條經(jīng)驗 獲得超3個贊

根據(jù)文檔,該m值是單調(diào)時鐘值,可以將其刪除用于Truncate比較而不是出于計時目的。該m字段不匹配,因為它從 JSON 中省略,它僅由time.Now().


像這樣嘗試:


// values

now := time.Now().Truncate(0)? // Truncate to remove monotonic clock portion

timeToJSON, _ := json.Marshal(now)

var obj time.Time

json.Unmarshal(timeToJSON, &obj)

添加單調(diào)時鐘偏移是為了允許準確計時跨越掛鐘更改(例如 NTP 更新、DST 更改或閏秒/拖尾)的持續(xù)時間。


查看完整回答
反對 回復(fù) 2023-03-29
?
海綿寶寶撒

TA貢獻1809條經(jīng)驗 獲得超8個贊


time.String()不是測試時間值的可靠方法(除非您也關(guān)心單調(diào)時鐘值)。來自文檔(添加了重點):

func(時間)字符串

func?(t?Time)?String()?string

String 返回使用格式字符串格式化的時間

"2006-01-02?15:04:05.999999999?-0700?MST"

如果時間具有單調(diào)時鐘讀數(shù),則返回的字符串包含最終字段“m=±”,其中值是格式為十進制秒數(shù)的單調(diào)時鐘讀數(shù)。

返回的字符串用于調(diào)試;對于穩(wěn)定的序列化表示,使用帶有顯式格式字符串的 t.MarshalText、t.MarshalBinary 或 t.Format。


對于您的用例,最好使用的輸出time.MarshalText()而不是time.String()

expected,?_?:=?now.MarshalText()
actual,?_?:=?obj.MarshalText()
if?!assert.Equal(string(expected),?string(actual))?...


查看完整回答
反對 回復(fù) 2023-03-29
  • 2 回答
  • 0 關(guān)注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號