簡體   English   中英

在Golang,uint16 VS int,哪個成本更低?

[英]In Golang, uint16 VS int, which is less cost?

我使用的是64位服務器。 我的golang程序需要整數類型。

那么,如果我在源代碼中使用uint16和uint32類型,它是否比使用大多數常規int類型花費更多?

我正在考慮計算成本和開發成本。

對於使用int的絕大多數情況更有意義。 以下是一些原因:

  1. Go不會隱式地在數字類型之間進行轉換,即使您認為它應該也是如此。 如果你開始使用一些無符號類型而不是int ,你應該期望用多種類型轉換來編寫代碼,因為其他庫或API更喜歡不用無符號類型,因為返回int值的非類型化常量數值表達式等等。
  2. 無符號類型比簽名類型更容易下溢,因為0(無符號類型的邊界值)在計算機程序中比自然發生的值更多,例如,-9223372036854775808。
  3. 如果您想使用無符號類型,因為它限制了您可以放入其中的值,請記住,當您組合靜默下溢和編譯僅限時間的常量傳播時,您可能無法獲得您想要的便宜貨。 例如,雖然您無法將常量math.MinInt64轉換為uint ,但您可以輕松地將值為math.MinInt64int變量轉換為uint 並且可以說, if檢查您嘗試分配的值是否對您的程序有效, if Go樣式並不是很糟糕。

除非你遇到巨大的內存壓力,並且你的價值空間略微超過了較小的簽名類型所能給你的價值空間,我認為即使僅僅因為開發成本,使用int也會更有效率。 即便如此,很可能在程序的內存占用中存在其他問題,或者像Go這樣的托管語言不是最適合您的需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM