運算子 - 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++ //編譯失敗,不可作為表達式