運算子 - skynocover/Wiki-for-GoLang GitHub Wiki
運算子
移位運算子
輸入不能是浮點數,且結果必定為整數
const MaxUint uint = (1 << 64) - 1 // 18446744073709551615
const MaxInt int = int(^uint(0) >> 1) // 9223372036854775807
sign
若為sign類型, 將會保留最左側的1
var n int8 = -128 //10000000
println(n >> 2) //10100000
var n2 int8 = 127 //01111111
println(n2 >> 2) //00011111
判斷系統位元
const NativeWordBits = 32 << (^uint(0) >> 63)
println(NativeWordBits )
const Is64bitOS = ^uint(0)>>64 == 0
const Is32bitOS = ^uint(0)>>32 == 0
println(Is64bitOS)
println(Is32bitOS)
位運算子
1100 & 1010 //1000
1100 | 1010 //1110
1100 ^ 1010 //0110
1100 &^ 1010 //0100
1100 & (^1010) //0100
反運算子
println(^uint(0)) // 18446744073709551615
println(^0) // -1
println(^int(0)) // -1
自增與自減
a++
_ = a++ //編譯失敗,不可作為表達式