Golang 1.13 adds number literal prefixes
6 September 2019 | 0
Go (Golang) 1.13, the latest version of Google’s open source language, is now available as a production release. The update supports a more uniform and modernised set of number literal prefixes.
Go adopted C’s number literal syntax from the beginning, but while most other C-numbered languages have added binary integer literals, alternate octal integer literals, hexadecimal floating point literals, and support for _ as a digit separator in number literals, Go has not kept up with these extensions—until now.
Language changes in Go 1.13, which arrived about six months after Go 1.12, include:
- For binary integer literals, the prefix
0Bindicates a binary integer literal such as
- For hexadecimal floating-point literals, the prefix
0Xcan express the mantissa of a floating-point number in hexadecimal format such as
0x1.op-1021. A hexadecimal floating point has to have an exponent, written as the letter p or P followed by an exponent in decimal. The exponent scales the mantissa by two to the power of the exponent.
- For octal integer literals, the prefix
0oindicates an octal integer literal such as
0o660. The existing octal notation, which leads with
0followed by octal digits, is still valid.
- The imaginary suffix,
i, now may be used with any binary, decimal, or hexadecimal integer or floating-point literal.
- Digits of any number literal now can be separated using underscores. An underscore (
_) may appear between any two digits or the literal prefix and the first digit.
Language changes were implemented by changes to the compiler and corresponding changes to library packages. Go 1.13 also removes the restriction that a shift count must be signed, eliminating the need for many artificial
uint conversions. The compiler, meanwhile, has a more precise implementation of escape analysis. Also, TLS (Transport Layer Security) 1.3 is enabled in the
crypto/tls package by default.
You can download Go 1.13 from golang.org.
IDG News Service