Go 具有任意大小和精度的無類型精確數值常量。該規范要求所有編譯器支持至少 256 位的整數,以及至少 272 位的浮點數(尾數 256 位,指數 16 位)。因此編譯器需要忠實、準確地表示如下表達式:const?(
????PI???????=?3.1415926535897932384626433832795028841971
????Prime256?=?84028154888444252871881479176271707868370175636848156449781508641811196133203
????)這很有趣......但我找不到任何方法來實際使用任何超過 64 位具體類型int64,?uint64,?float64,?complex128(這只是一對float64值)的最大精度的常量。即使標準庫大數字類型?big.Int也不big.Float能從大數字常量初始化——它們必須從字符串常量或其他表達式反序列化。底層機制相當明顯:常量僅在編譯時存在,并且必須強制為可在運行時表示的某個值才能在運行時使用。它們是僅存在于代碼和編譯期間的語言構造。您無法在運行時檢索常量的原始值;它不存儲在編譯后的程序本身的某個地址處。所以問題仍然存在:當大量常量無法在實踐中使用時,為什么該語言要支持這些常量呢?
- 0 回答
- 0 關注
- 159 瀏覽
添加回答
舉報
0/150
提交
取消