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.
+