亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

咕嚕咕嚕 - 如何將值初始化為*時間。時間

咕嚕咕嚕 - 如何將值初始化為*時間。時間

Go
開滿天機 2022-09-26 19:36:49
我在某個文件中定義了一個結構device.gotype Payload struct {    ...    Timestamp *time.Time  `json:"timestamp,omitempty"`    ...}現在我想在其他文件中初始化此結構,我正在嘗試此操作:payload:= &device.Payload{    ....    Timestamp: time.Now(), // throws error    ... //other initializations work fine}不能使用時間。Now() (時間類型的值。時間)作為*時間。結構文字中的時間值我想將變量初始化為當前 UTC 時間。我是高朗的新手。我該怎么做?
查看完整描述

2 回答

?
qq_花開花謝_0

TA貢獻1835條經驗 獲得超7個贊

時間。Now() 返回時間類型的值。時間,這不是。*time.Time

請注意,您也不能獲取函數調用的返回值的地址,也不能這樣做。詳情請參見如何從函數調用中獲取返回值的指針?&time.Now()

您可以做的是使用類型的變量并獲取其地址:time.Time

var t = time.Now()

payload:= &device.Payload{
    Timestamp: &t,
}

另一個“流行”選項是創建一個幫助器函數來返回值的地址(您可以直接將函數調用的返回值傳遞給該函數):time.Time

func timePtr(t time.Time) *time.Time {    return &t
}

payload:= &device.Payload{
    Timestamp: timePtr(time.Now()),
}

有關詳細信息和其他選項,請參閱如何在 Go 中執行文字 *int64?

我假設你想要一個指針,因為你想要允許“缺少時間”選項,這是包尊重“丟失時間”所必需的(詳細信息:JSON omitempty 隨時間。時間字段)。請注意,在其他情況下,可能不需要自動轉到指針:您可以使用(這是一個結構)的零值來指示“缺少時間”狀態。為了輕松判斷 a 是否為零值,您可以使用時間.相關內容:表示可選時間的慣用語。結構中的時間encoding/jsontime.Timetime.Time


查看完整回答
反對 回復 2022-09-26
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

時間。Now() 返回一個 Time 值,但您的結構正在尋找指針。將結構更改為

type Payload struct {
    ...
    Timestamp time.Time  `json:"timestamp,omitempty"`
    ...
}

從文檔(https://pkg.go.dev/time#Time):

使用時間的程序通常應將它們存儲并作為值(而不是指針)傳遞。也就是說,時間變量和結構字段的類型應為 time。時間,而不是*時間。時間。


查看完整回答
反對 回復 2022-09-26
  • 2 回答
  • 0 關注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號