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

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

在 golang 中,在自定義類型上實現方法,因此不需要在 Println 中強制轉換

在 golang 中,在自定義類型上實現方法,因此不需要在 Println 中強制轉換

Go
SMILET 2022-08-15 16:27:56
我對golang很陌生。以下代碼修改自: https://jordanorelli.com/post/32665860244/how-to-use-interfaces-in-go為什么 Println 調用中的最后一行中必填項?time.Time()為什么打印 不產生相同的字符串結果?它改為生成一個指針。val["created_at"]您將看到我嘗試了幾次創建與自定義時間戳類型一起使用的 Println 函數。是否可以在 Timestamp 自定義類型上定義一個函數,以便代碼末尾的 Println 函數輸出字符串而不是指針?我想這可能也回答了我的問題:https://stackoverflow.com/a/6485229/4005067但是有沒有辦法定義時間戳類型的某些函數,以便不需要強制轉換?package mainimport (    "encoding/json"    "fmt"    "reflect"    "time")// start with a string representation of our JSON datavar input = `{    "created_at": "Thu May 31 00:00:01 +0000 2012"}`type Timestamp time.Timefunc (t *Timestamp) UnmarshalJSON(b []byte) error {    v, err := time.Parse(time.RubyDate, string(b[1:len(b)-1]))    if err != nil {        return err    }    *t = Timestamp(v)    return nil}//func (t *Timestamp) Println(a ...interface{}) (n int, err error) {//  return fmt.Println(time.Time(*t))//}//func (t Timestamp) String() string {//  return string(t)//}func main() {    // our target will be of type map[string]interface{}, which is a pretty generic type    // that will give us a hashtable whose keys are strings, and whose values are of    // type interface{}    var val map[string]Timestamp    if err := json.Unmarshal([]byte(input), &val); err != nil {        panic(err)    }    fmt.Println(val)    for k, v := range val {        fmt.Println(k, reflect.TypeOf(v))    }    fmt.Println(val["created_at"])    fmt.Println(reflect.TypeOf(val["created_at"]))    fmt.Println(Timestamp(val["created_at"]))    fmt.Println(time.Time(val["created_at"]))}在操場上的輸出是:map[created_at:{0 63474019201 0x5b0580}]created_at main.Timestamp{0 63474019201 0x5b0580}main.Timestamp{0 63474019201 0x5b0580}2012-05-31 00:00:01 +0000 UTC
查看完整描述

1 回答

?
梵蒂岡之花

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

定義一種方法是一種方法,就像你上面嘗試的那樣。通過一些小的修改,我們可以使它工作。String

func (t Timestamp) String() string {
  return time.Time(t).String()
}


查看完整回答
反對 回復 2022-08-15
  • 1 回答
  • 0 關注
  • 90 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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