-2

テストする次の基本的なコードがあります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)

}

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)

}

そして、私はこれを結果として得ます:

% 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

Atoi返される 2 つのエラー ( ErrSyntax、 )を処理する方法を理解したいと思いErrRangeます。

4

2 に答える 2

6

errorsパッケージを使用できます ( Go 1.13 でのエラーの処理):

if errors.Is(err, strconv.ErrSyntax) {
    fmt.Println("syntax error")
    os.Exit(1)
}
于 2020-08-03T17:51:47.253 に答える