1. ホーム
  2. numbers

[解決済み] Goにおけるint型の最大値

2022-04-13 09:38:47

質問

の表現可能な最大値はどのように指定するのですか? unsigned 整数型

を初期化する方法を教えて欲しい。 min は、構造体から最小値と最大値を繰り返し計算する以下のループで使用されます。

var minLen uint = ???
var maxLen uint = 0
for _, thing := range sliceOfThings {
  if minLen > thing.n { minLen = thing.n }
  if maxLen < thing.n { maxLen = thing.n }
}
if minLen > maxLen {
  // If there are no values, clamp min at 0 so that min <= max.
  minLen = 0
}

というように、初回の比較で minLen >= n .

解決方法は?

https://groups.google.com/group/golang-nuts/msg/71c307e4d73024ce?pli=1

ゲルマニウムの部分。

整数型は2の補数演算を使うので、その補数から の最小/最大定数値 intuint . 例えば

const MaxUint = ^uint(0) 
const MinUint = 0 
const MaxInt = int(MaxUint >> 1) 
const MinInt = -MaxInt - 1

CarelZAさんのコメントの通りです。

uint8  : 0 to 255 
uint16 : 0 to 65535 
uint32 : 0 to 4294967295 
uint64 : 0 to 18446744073709551615 
int8   : -128 to 127 
int16  : -32768 to 32767 
int32  : -2147483648 to 2147483647 
int64  : -9223372036854775808 to 9223372036854775807