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.

Reply via email to