@@ -82,12 +82,13 @@ func (js *jsonScanner) nextToken() (*jsonToken, error) {
8282 return js .scanString ()
8383 default :
8484 // check if it's a number
85- if c == '-' || isDigit (c ) {
85+ switch {
86+ case c == '-' || isDigit (c ):
8687 return js .scanNumber (c )
87- } else if c == 't' || c == 'f' || c == 'n' {
88+ case c == 't' || c == 'f' || c == 'n' :
8889 // maybe a literal
8990 return js .scanLiteral (c )
90- } else {
91+ default :
9192 return nil , fmt .Errorf ("invalid JSON input. Position: %d. Character: %c" , js .pos - 1 , c )
9293 }
9394 }
@@ -174,7 +175,7 @@ func getu4(s []byte) rune {
174175 for _ , c := range s [:4 ] {
175176 switch {
176177 case '0' <= c && c <= '9' :
177- c = c - '0'
178+ c -= '0'
178179 case 'a' <= c && c <= 'f' :
179180 c = c - 'a' + 10
180181 case 'A' <= c && c <= 'F' :
@@ -325,13 +326,14 @@ func (js *jsonScanner) scanLiteral(first byte) (*jsonToken, error) {
325326
326327 c5 , err := js .readNextByte ()
327328
328- if bytes .Equal ([]byte ("true" ), lit ) && (isValueTerminator (c5 ) || errors .Is (err , io .EOF )) {
329+ switch {
330+ case bytes .Equal ([]byte ("true" ), lit ) && (isValueTerminator (c5 ) || errors .Is (err , io .EOF )):
329331 js .pos = int (math .Max (0 , float64 (js .pos - 1 )))
330332 return & jsonToken {t : jttBool , v : true , p : p }, nil
331- } else if bytes .Equal ([]byte ("null" ), lit ) && (isValueTerminator (c5 ) || errors .Is (err , io .EOF )) {
333+ case bytes .Equal ([]byte ("null" ), lit ) && (isValueTerminator (c5 ) || errors .Is (err , io .EOF )):
332334 js .pos = int (math .Max (0 , float64 (js .pos - 1 )))
333335 return & jsonToken {t : jttNull , v : nil , p : p }, nil
334- } else if bytes .Equal ([]byte ("fals" ), lit ) {
336+ case bytes .Equal ([]byte ("fals" ), lit ):
335337 if c5 == 'e' {
336338 c5 , err = js .readNextByte ()
337339
@@ -430,12 +432,13 @@ func (js *jsonScanner) scanNumber(first byte) (*jsonToken, error) {
430432 case '}' , ']' , ',' :
431433 s = nssDone
432434 default :
433- if isWhiteSpace (c ) || errors .Is (err , io .EOF ) {
435+ switch {
436+ case isWhiteSpace (c ) || errors .Is (err , io .EOF ):
434437 s = nssDone
435- } else if isDigit (c ) {
438+ case isDigit (c ):
436439 s = nssSawIntegerDigits
437440 b .WriteByte (c )
438- } else {
441+ default :
439442 s = nssInvalid
440443 }
441444 }
@@ -455,12 +458,13 @@ func (js *jsonScanner) scanNumber(first byte) (*jsonToken, error) {
455458 case '}' , ']' , ',' :
456459 s = nssDone
457460 default :
458- if isWhiteSpace (c ) || errors .Is (err , io .EOF ) {
461+ switch {
462+ case isWhiteSpace (c ) || errors .Is (err , io .EOF ):
459463 s = nssDone
460- } else if isDigit (c ) {
464+ case isDigit (c ):
461465 s = nssSawFractionDigits
462466 b .WriteByte (c )
463- } else {
467+ default :
464468 s = nssInvalid
465469 }
466470 }
@@ -490,12 +494,13 @@ func (js *jsonScanner) scanNumber(first byte) (*jsonToken, error) {
490494 case '}' , ']' , ',' :
491495 s = nssDone
492496 default :
493- if isWhiteSpace (c ) || errors .Is (err , io .EOF ) {
497+ switch {
498+ case isWhiteSpace (c ) || errors .Is (err , io .EOF ):
494499 s = nssDone
495- } else if isDigit (c ) {
500+ case isDigit (c ):
496501 s = nssSawExponentDigits
497502 b .WriteByte (c )
498- } else {
503+ default :
499504 s = nssInvalid
500505 }
501506 }
0 commit comments