There was also some talk in the math/bits proposal thread https://github.com/golang/go/issues/18616 about creating a math/checked library but to my knowledge no one's opened a proposal for that yet
On Fri, Mar 17, 2017 at 6:49 AM, Ian Lance Taylor <i...@golang.org> wrote: > On Thu, Mar 16, 2017 at 11:04 PM, Konstantin Khomoutov > <flatw...@users.sourceforge.net> wrote: >> On Tue, 14 Mar 2017 07:12:01 -0700 >> Ian Lance Taylor <i...@golang.org> wrote: >> >>> > I was thinking about the type safety of uint in go, and comparing >>> > it for a similar problem. >>> > >>> > If I have this go code: >>> > >>> > var x uint >>> > x-- >>> > >>> > The value of x is then the maximal value of uint, which is probably >>> > not what the gother wanted (I think, is there any particular use >>> > cases for that that you know of?) >>> > >>> > So my question is: why does go allow that, and for example panics >>> > on index out of range of an array? Doesn't it make sense that it >>> > also should panic in this case? >>> >>> Well, there are also uses for modulo arithmetic. If we make this >>> panic, writing the equivalent operation that doesn't panic seems >>> awkward. I think there is a better case to be made that signed types >>> should panic on overflow, the main question there being the run time >>> efficiency cost. >> >> I think I might have asked this already but wouldn't it be possible to >> add (in the future) a two-argument form for integer arithmetic >> operations and bit shifts, so that the second argument, if used, is set >> to the overflow status? >> >> Like in: >> >> var x uint >> if x, of := x-1; of { >> panic("Integer underflow"); >> } >> >> var y uint32 >> if y, cf := x << 33; cf { >> panic("Bit carrying detected"); >> } >> >> I'm not too much versed in CPU hardware, so offhand I can only say that >> Z80 and x86 do support overflow and carrying detection. > > See https://golang.org/issue/6815. > > 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+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/d/optout. -- 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. For more options, visit https://groups.google.com/d/optout.