Standard Library Utilities
Strconv Conversion
The strconv package converts between strings and basic values, with error reporting when parsing fails.
conversion
A conversion helper turns text into a typed value or reports why it could not.
Strconv Conversion
strconv_conversion.go
Replay: real traced execution (multi-file project)
package main
import (
"fmt"
"strconv"
)
func main() {
var raw = "42"
value, err := strconv.Atoi(raw)
ok := err == nil
if !ok {
value = 0
}
fmt.Println("raw=", raw)
fmt.Println("ok=", ok)
fmt.Println("value=", value)
}
package main
import (
"fmt"
"strconv"
)
func main() {
var raw = "7"
value, err := strconv.Atoi(raw)
ok := err == nil
if !ok {
value = 0
}
fmt.Println("raw=", raw)
fmt.Println("ok=", ok)
fmt.Println("value=", value)
}
package main
import (
"fmt"
"strconv"
)
func main() {
var raw = "bad"
value, err := strconv.Atoi(raw)
ok := err == nil
if !ok {
value = 0
}
fmt.Println("raw=", raw)
fmt.Println("ok=", ok)
fmt.Println("value=", value)
}
raw ← "42", value ← 42, err ← <nil>, ok ← true
8func main() {9 var raw→ "42" = "42" //@raw="7", "bad"10 value→ 42, err→ <nil> := strconv.Atoi(raw"42")11 ok→ true := err<nil> == nil1213 if !ok {14 value = 015 }1617 fmt.Println("raw=", raw"42")18 fmt.Println("ok=", oktrue)19 fmt.Println("value=", value42)20}outputraw= 42 ok= true value= 42
raw ← "7", value ← 7, err ← <nil>, ok ← true
8func main() {9 var raw→ "7" = "7"10 value→ 7, err→ <nil> := strconv.Atoi(raw"7")11 ok→ true := err<nil> == nil1213 if !ok {14 value = 015 }1617 fmt.Println("raw=", raw"7")18 fmt.Println("ok=", oktrue)19 fmt.Println("value=", value7)20}outputraw= 7 ok= true value= 7
raw ← "bad", value ← 0, err ← &strconv.NumError{Func:"Atoi", Num:"bad", Err:(*errors.errorString)(⟨addr A⟩)}
8func main() {9 var raw→ "bad" = "bad"10 value→ 0, err→ &strconv.NumError{Func:"Atoi", Num:"bad", Err:(*errors.errorString)(⟨addr A⟩)} := strconv.Atoi(raw"bad")11 ok→ false := err&strconv.NumError{Func:"Atoi", Num:"bad", Err:(*errors.errorString)(⟨addr A⟩)} == nilif !ok
13if !okfalse {14 value0 = 015}fmt.Println("raw=", raw)
17 fmt.Println("raw=", raw"bad")18 fmt.Println("ok=", okfalse)19 fmt.Println("value=", value0)20}outputraw= bad ok= false value= 0