Yes, My favourite is the `time` package. It's just so elegant how it's just a number under there, the nominal type system truly shines. And using it is a treat. What do you mean I can do `+= 8*time.Hour` :D
It's simplistic and that's nice for small tools or scripts, but at scale it becomes really brittle since none of the edge cases are handled
In Go, `int * Duration = error`, but `Duration * Duration = Duration`!
Internally time.Duration is a single 64bit count, while time.Time is two more complicated 64bit fields plus a location
Other than having to periodically remember what 0-padded milliseconds are or whatever this isn't a huge deal.
If you have an int variable hours := 8, you have to cast it before multiplying.
This is also true for simple int and float operations.
f := 2.0
3 * f
is valid, but x := 3 would need float64(x)*f to be valid. Same is true for addition etc.