我正在使用 64 位服務器。我的 golang 程序需要整數類型。所以,如果我在源代碼中使用 uint16 和 uint32 類型,它是否比使用大多數常規 int 類型花費更多?我正在考慮計算成本和開發成本。
1 回答

呼啦一陣風
TA貢獻1802條經驗 獲得超6個贊
對于絕大多數情況,使用int
更有意義。以下是一些原因:
Go 不會在數字類型之間隱式轉換,即使您認為應該這樣做。如果您開始使用一些無符號類型而不是
int
,您應該期望您的代碼具有多種類型轉換,因為其他庫或 API 更喜歡不打擾無符號類型,因為無類型常量數值表達式返回int
值等。無符號類型比有符號類型更容易發生下溢,因為 0(無符號類型的邊界值)在計算機程序中比 -9223372036854775808 更像是一個自然發生的值。
如果您想使用無符號類型,因為它限制了您可以放入其中的值,請記住,當您將靜默下溢和僅編譯時常量傳播結合使用時,您可能無法獲得想要的便宜貨。例如,雖然您無法將常量轉換
math.MinInt64
為 auint
,但您可以輕松地將int
帶值的變量轉換math.MinInt64
為 auint
。并且可以說,if
檢查您嘗試分配的值是否對您的程序有效并不是一種糟糕的 Go 風格。
除非您遇到顯著的內存壓力并且您的價值空間略高于較小的有符號類型為您提供的空間,否則我認為int
即使只是因為開發成本,使用也會更有效率。即便如此,也有可能是程序內存占用的其他地方存在問題,或者像 Go 這樣的托管語言不適合您的需求。
- 1 回答
- 0 關注
- 216 瀏覽
添加回答
舉報
0/150
提交
取消