条件文の外にいくつかの変数(offsetI
およびlimitI
)が宣言されています。条件文の中で私はそれらの値を代入しようとしていますが、条件文の後にそれらの値をクエリに使用します。変数が宣言され、条件文で使用されません
var (
number, size, offset, limit string
offsetI, limitI uint64
)
// Get the string values for number, size, offset, and limit
// ...
if size != "" {
// Parse the number value
numberI, err := strconv.ParseUint(number, 10, 64)
if err != nil {...}
// Parse the size value
limitI, err = strconv.ParseUint(size, 10, 64)
if err != nil {...}
// Calculate the offset
offsetI = numberI * limitI
} else {
// Parse the limit value
limitI, err := strconv.ParseUint(limit, 10, 64) // limitI declared and not used
if err != nil {...}
// Parse the offset value
offsetI, err = strconv.ParseUint(offset, 10, 64)
if err != nil {...}
}
// Make the query using offsetI and limitI
result, err := s.GetAllPaginated(offsetI, limitI)
if err != nil {...}
私はelse
文のスコープ内で再宣言limitI
変数を意図するものではないのですが、私は新しいerr
変数を宣言するため:=
演算子を使用する必要があります。
私が思い付くことができる唯一の事は別に、別のerr
変数を宣言することだったので、私は通常の代入文を使用することができます。
} else {
var err error // New
// Regular assignment statement now
limitI, err = strconv.ParseUint(limit, 10, 64)
if err != nil {...}
私はせずにこれを実行できるようにしたいと思います追加のエラー変数を宣言します。
これは厄介ですが、はい、まさにあなたがしなければならないことです。 ':='は、左側に複数の変数を指定すると、同じスコープ内にまだ宣言されていない_all_を再宣言します。 – twotwotwo