time.Duration.String() already does the pretty printing: https://pkg.go.dev/time@master#Duration.String time.ParseDuration is the parser which could be used in UnmarshalText.
rog a következőt írta (2022. január 19., szerda, 12:55:49 UTC+1): > On Wed, 19 Jan 2022 at 04:19, Ian Lance Taylor <ia...@golang.org> wrote: > >> On Mon, Jan 17, 2022 at 9:53 PM Corin Lawson <corin....@gmail.com> wrote: >> > >> > It seems obvious (to me) that the encoding.TextUnmarshaler interface >> could be implemented for time.Duration (it is implemented for time.Time, >> afterall). >> > >> > The fact that it is not gives me pause... is there a good reason that >> the stdlib has not done this? What issues am I facing if I do this: >> https://go.dev/play/p/nHBfS7TJQtJ >> > >> > ``` >> > // UnmarshalText implements the encoding.TextUnmarshaler interface. >> > func (d *Duration) UnmarshalText(data []byte) error { >> > val, err := time.ParseDuration(string(data)) >> > *d = Duration(val) >> > return err >> > } >> > ``` >> >> A time.Duration is just an integer. The standard text marshaling and >> unmarshaling work fine. >> > > They do work fine in the technical sense, but marshalling a 1s duration as > 1000000000 doesn't make for a particularly readable specification of a > duration when found in configuration (it's so easy to misread the number of > digits). I've often wrapped a time.Duration in a type that implements > marshaling and unmarshaling so it's possible to write 1s, 500ms, etc. > > Unfortunately I don't believe that's possible to add retrospectively > because marshaling using Duration.String would break any existing users > that expect a number. > > cheers, > rog. > > >> Ian >> >> -- >> You received this message because you are subscribed to the Google Groups >> "golang-nuts" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to golang-nuts...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/golang-nuts/CAOyqgcUbSaTJ15zT7ksQmDMaf2oq%2B0oY5uN-kzzKHXa-6JjnJw%40mail.gmail.com >> . >> > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/ffdb51b7-d73a-4e2f-bf51-a816b2c81d85n%40googlegroups.com.