Because v := -1 declares a new variable and saves it in v - and the default type of an integer constant is int. After that, this int gets converted to a uint, which is fine. In the case of uint(-1), you have an untyped constant, which you then try to cast directly to a specific type (making a typed constant). But a uint-constant can't be -1.
So, there are two differences: one is between a constant and a variable (for example, uint(int(-1)) also doesn't work, as you are still making a constant) and two, between casting an int to a uint and trying to create a negative uint const. On Mon, Feb 27, 2017 at 12:16 AM, Felix Sun <[email protected]> wrote: > But why these two way don't have consistent behavior ? > > uint(-1) > > > v :=-1 > uint(v) > > > Michael Jones <[email protected]>于2017年2月26日 周日上午11:35写道: > >> yes. >> https://en.wikipedia.org/wiki/Two's_complement >> >> On Sat, Feb 25, 2017 at 10:21 PM, Felix Sun <[email protected]> wrote: >> >> https://play.golang.org/p/TmxMmltHGH >> >> package main >> >> import ( >> "fmt" >> ) >> >> func main() { >> var f int = -1 >> fmt.Println("become huge number:", uint(f)) >> fmt.Println("this panic", uint(-1)) >> >> } >> >> -- >> 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 [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> >> >> >> >> -- >> Michael T. Jones >> [email protected] >> > -- > 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 [email protected]. > 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
