uint數據類型的長度不是固定不變的红淡,而是和平臺位數相關卸伞,因此可以使用uint判斷平臺位數。
代碼示例
示例1:
func main() {
fmt.Println(32 << (^uint(0) >> 63)) // 輸出32锉屈,則為32位荤傲;輸出64,則為64位
}
示例2:
unsafe.Sizeof()
返回數據類型的字節(jié)數颈渊。
func main() {
var a uint = 0
fmt.Println(unsafe.Sizeof(a)) // 輸出4(Byte)遂黍,則為32位;輸出8(Byte)俊嗽,則為64位
}
解釋
平臺位數 | uint位數 | ^uint(0) | ^uint(0) >> 63 | 32 << (^uint(0) >> 63) |
---|---|---|---|---|
32 | 32 | 2^32 - 1 | 0 | 32 |
64 | 64 | 2^64 - 1 | 1 | 64 |