]> Cypherpunks repositories - gostls13.git/commitdiff
strconv: use switch for '+'/'-' prefix handling
authorzhi.wang <zhi.wang@kunlun-inc.com>
Sun, 6 Apr 2025 13:08:57 +0000 (13:08 +0000)
committerGopher Robot <gobot@golang.org>
Mon, 7 Apr 2025 20:36:46 +0000 (13:36 -0700)
Follow the approach used in strconv's readFloat, decimal.set, and Atoi,
where leading '+' and '-' are handled using a switch for clarity and
consistency.

Change-Id: I41eff34ce90b5ac43fcdbc0bb88910d6d5fb4d39
GitHub-Last-Rev: 0c9d2efb5a828515fa00afdba8c436aa31fb0e53
GitHub-Pull-Request: golang/go#73185
Reviewed-on: https://go-review.googlesource.com/c/go/+/663257
Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Auto-Submit: Dmitri Shuralyov <dmitshur@google.com>
Reviewed-by: Keith Randall <khr@google.com>
Reviewed-by: Keith Randall <khr@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>

src/strconv/atof.go
src/strconv/atoi.go

index fe0dfdce55a0d089c0dae31f383a033829832dc4..fbbd84deb358b729822f35bd44374ffd06c216c7 100644 (file)
@@ -77,12 +77,12 @@ func (b *decimal) set(s string) (ok bool) {
        if i >= len(s) {
                return
        }
-       switch {
-       case s[i] == '+':
+       switch s[i] {
+       case '+':
                i++
-       case s[i] == '-':
-               b.neg = true
+       case '-':
                i++
+               b.neg = true
        }
 
        // digits
@@ -135,9 +135,10 @@ func (b *decimal) set(s string) (ok bool) {
                        return
                }
                esign := 1
-               if s[i] == '+' {
+               switch s[i] {
+               case '+':
                        i++
-               } else if s[i] == '-' {
+               case '-':
                        i++
                        esign = -1
                }
@@ -176,12 +177,12 @@ func readFloat(s string) (mantissa uint64, exp int, neg, trunc, hex bool, i int,
        if i >= len(s) {
                return
        }
-       switch {
-       case s[i] == '+':
+       switch s[i] {
+       case '+':
                i++
-       case s[i] == '-':
-               neg = true
+       case '-':
                i++
+               neg = true
        }
 
        // digits
@@ -268,9 +269,10 @@ loop:
                        return
                }
                esign := 1
-               if s[i] == '+' {
+               switch s[i] {
+               case '+':
                        i++
-               } else if s[i] == '-' {
+               case '-':
                        i++
                        esign = -1
                }
index 599ad9b8950833ff76c8e8939ab8e492e403c2cb..83e931fe241ca5a8fd60760116344d2cd76793d1 100644 (file)
@@ -204,11 +204,12 @@ func ParseInt(s string, base int, bitSize int) (i int64, err error) {
        // Pick off leading sign.
        s0 := s
        neg := false
-       if s[0] == '+' {
+       switch s[0] {
+       case '+':
                s = s[1:]
-       } else if s[0] == '-' {
-               neg = true
+       case '-':
                s = s[1:]
+               neg = true
        }
 
        // Convert unsigned and check range.