在strconv包中有個常量
const intSize = 32 << ( ^uint(0) >> 63 )
const IntSize = intSize
在32位平台這個值為32;在64位平台,這個值為64; 因此可以通過這個來判斷平台的位數.
原理:
在32平台系統:
1. uint(0)在平台底層是0x00000000
2. ^uint(0)在平台底層是0xFFFFFFFF
3. ^uint(0) >> 63 在底層平台是0x00000000,也就是0
4. 32 << 0 結果是0
在64平台系統:
1. uint(0)在平台底層是0x0000000000000000
2. ^uint(0)在平台底層是0xFFFFFFFFFFFFFFFF
3. ^uint(0) >> 63 在底層平台是0x0000000000000001,也就是1
4. 32 << 1 結果是32*2 = 64
非常巧妙!!!