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

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

兩個結構指針之間的類型轉換

兩個結構指針之間的類型轉換

Go
慕尼黑8549860 2023-06-19 16:56:49
我有一個由struct自定義界面組成的自定義界面,time.TimeMarshalJSON()type MyTime time.Timefunc (s myTime) MarshalJSON() ([]byte, error) {? ? t := time.Time(s)? ? return []byte(t.Format(`"20060102T150405Z"`)), nil}我定義了一個MyStruct類型ThisDate和ThatDate類型的字段*MyTime:type MyStruct struct {? ? ThisDate *MyTime `json:"thisdate,omitempty"`? ? ThatDate *MyTime `json:"thatdate,omitempty"`}據(jù)我所知,我需要使用*MyTimeand notMyTime所以當我按照這個答案的建議使用這種類型的變量omitempty時,標簽會產生影響。MarshalJSON我使用一個庫,該庫具有一個函數(shù),該函數(shù)返回struct帶有某些類型字段的a *time.Time:someVar := Lib.GetVar()我試圖定義MyStruct這樣一個類型的變量:myVar := &MyStruct{? ? ThisDate: someVar.ThisDate? ? ThatDate: someVar.ThatDate}自然地,它給了我一個編譯錯誤:cannot use someVar.ThisDate (variable of type *time.Time) as *MyTime value in struct literal ...我嘗試someVar.ThisDate使用*/&和不使用這些進行類型轉換,但運氣不佳。我認為以下方法可行:myVar := &MyStruct{? ? ThisDate: *MyTime(*someVar.ThisDate)? ? ThatDate: *MyTime(*someVar.ThatDate)}但它給了我一個不同的編譯錯誤:invalid operation: cannot indirect MyTime(*someVar.ThisDate) (value of type MyTime) ...看來我可能對 Go 中的指針和取消引用缺乏基本的了解。盡管如此,我還是想避免為我的問題找到具體的解決方案,這歸結為需要 make have omitemptyan effect 和 custom 的結合MarshalJSON。
查看完整描述

1 回答

?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

問題是語法不明確*T(v)或您在那里嘗試過的任何其他內容。Golang的規(guī)范給出了類型轉換的有用示例,引用如下:

*Point(p)????????//?same?as?
*(Point(p))(*Point)(p)??????//?p?is?converted?to?*Point

所以,既然*Point需要,*T(v)就應該使用。


查看完整回答
反對 回復 2023-06-19
  • 1 回答
  • 0 關注
  • 167 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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