Golang пользовательский тип печати fmt - PullRequest
0 голосов
/ 01 мая 2020

У меня есть такой тип:

type Timestamp struct {
    Time time.Time  
}
// some more methods...

Теперь, когда я распечатываю его экземпляр, используя fmt:

test := Timestamp{
    Time: time.Now(),
}
fmt.Println("TEST:", test)

, вывод:

TEST: {2009-11-10 23:00:00 +0000 UTC m=+0.000000001}

Как добавить пользовательское форматирование к пользовательскому типу, чтобы печатать вывод, например 2009-11-10T23:00:00Z, в тех случаях, когда он должен быть напечатан с использованием fmt функций (Println et c ..)?

1 Ответ

0 голосов
/ 01 мая 2020

Это так же просто, как добавить эту функцию:

func (ts Timestamp) Format(f fmt.State, c rune) {
    f.Write([]byte(ts.Time.Format(time.RFC3339)))
}

Вывод:

TEST: 2020-05-01T08:25:14Z
...