我有以下测试基本代码strconv.Atoi():
package main
import (
"fmt"
"strconv"
)
func main() {
var a int
var b string
var err Error
b = "32"
a,err = strconv.Atoi(b)
fmt.Println(a)
fmt.Println(err)
}
Run Code Online (Sandbox Code Playgroud)
我想处理 中是否有错误strconv.Atoi(),特别是如果错误是由于语法或范围,strconv.Atoi()可以提供的条件。为此,我尝试了以下方法:
package main
import (
"os"
"fmt"
"strconv"
)
func main() {
var a int
var b string
var err error
b = "32"
a,err = strconv.Atoi(b)
if(err.Err == ErrSyntax) {
fmt.Println("ERROR")
os.Exit(1)
}
fmt.Println(a)
fmt.Println(err)
}
Run Code Online (Sandbox Code Playgroud)
我得到这个结果:
% go build test.go
# command-line-arguments
./test.go:19:8: err.Err undefined (type error has no field or method Err)
./test.go:19:16: undefined: ErrSyntax
Run Code Online (Sandbox Code Playgroud)
我想了解如何处理Atoi可以返回的两个错误( ErrSyntax, ErrRange)。
您可以使用errors包(在 Go 1.13 中处理错误):
if errors.Is(err, strconv.ErrSyntax) {
fmt.Println("syntax error")
os.Exit(1)
}
Run Code Online (Sandbox Code Playgroud)