Numbers that start with zero
yourbasic.org/golang
What’s up with the counting in this example?
const (
Century = 100
Decade = 010
Year = 001
)
// The world's oldest person, Emma Morano, lived for a century,
// two decades and two years.
fmt.Println("She was", Century+2*Decade+2*Year, "years old.")
She was 118 years old.
Answer
010
is a number in base 8, therefore it means 8, not 10.
Integer literals in Go are specified in octal, decimal or hexadecimal.
The number 16 can be written as 020
, 16
or 0x10
.
Literal | Base | Note |
---|---|---|
020 |
8 | Starts with 0 |
16 |
10 | Never starts with 0 |
0x10 |
16 | Starts with 0x |
This bitwise operators cheat sheet covers all bitwise operators and functions in Go.
Zero knowledge (trivia)
There are many ways to write zero in base 8 in Go, including
0
, 00
and 000
.
If you prefer hexadecimal notation, you also have a smörgåsbord of options: such as
0x0
, 0x00
and 0x000
(as well as 0X0
, 0X00
and 0X000
).
However, there is no decimal zero integer literal in Go.
In fact, Go doesn’t have any negative decimal literals either:
-1
is the unary negation operator
followed by the decimal literal 1
.