What is ^0 in golang?

samol picture samol · Oct 4, 2013 · Viewed 7.9k times · Source

I am seeing ^0 in the code base.

Example:

type stat struct {
  ...
  min int64
  ...
}

newStat := stat{min: ^0}

What does ^0 mean?

Answer

Murilo Vasconcelos picture Murilo Vasconcelos · Oct 4, 2013

According to the docs:

^x bitwise complement is m ^ x with m = "all bits set to 1" for

unsigned x and m = -1 for signed x

It means that ^0 is the same as ~0 in other mainstream languages.

On a two's complement (which most of the programming languages adopt) the value of the complement of zero is -1 (on an signed data type). So this is a way to write:

newStat := stat{min: -1}