From 7119f4b03045b4d062765a5863553c16aff3663d Mon Sep 17 00:00:00 2001
From: Robert Griesemer
-TODO
+ Per the number literal proposal,
+ Go 1.13 supports a more uniform and modernized set of number literal prefixes.
+ Changes to the language
+
0b
or 0B
indicates a binary integer literal
+ such as 0b1011
.
+ 0o
or 0O
indicates an octal integer literal
+ such as 0o660
.
+ The existing octal notation indicated by a leading 0
followed by
+ octal digits remains valid.
+ 0x
or 0X
may now be used to express the mantissa of a
+ floating-point number in hexadecimal format such as 0x1.0p-1021
.
+ A hexadecimal floating-point number must always have an exponent, written as the letter
+ p
or P
followed by an exponent in decimal. The exponent scales
+ the mantissa by 2 to the power of the exponent.
+ i
may now be used with any (binary, decimal, hexadecimal)
+ integer or floating-point literal.
+ 1_000_000
, 0b_1010_0110
, or 3.1415_9265
.
+ An underscore may appear between any two digits or the literal prefix and the first digit.
+
- TODO: https://golang.org/cl/158797: implement shifts by signed amounts +
+ Per the signed shift counts proposal
+ Go 1.13 removes the restriction that a shift count
+ must be unsigned. This change eliminates the need for many artificial uint
conversions,
+ solely introduced to satisfy this (now removed) restriction of the <<
and >>
operators.
+ These language changes were implemented by changes to the compiler, and corresponding internal changes to the library
+ packages go/scanner
and
+ text/scanner
(number literals),
+ and go/types
(signed shift counts).
+
+ If your code uses modules and your go.mod
files specifies a language version, be sure
+ it is set to at least 1.13
to get access to these language changes.
+ You can do this by editing the go.mod
file directly, or you can run
+ go mod edit -go=1.13
.
+