こんにちは、kurumi-bioです。
第7回目のexecパッケージ(標準ライブラリー)の学習です。
環境
- Windows
OSバージョン:Windows11 Home 22H2
Go言語のバージョン:go version go1.20.3 windows/amd64 - Linux
OSバージョン:openSUSE Leap 15.4
Go言語のバージョン:go version go1.20.1 linux/amd64
Error型
type Error struct { // Name is the file name for which the error occurred. Name string // Err is the underlying error. Err error }
◆テストコード
package main import ( "fmt" "os" "os/exec" ) func main() { if len(os.Args) != 2 { fmt.Fprintln(os.Stderr, "usage:ErrorTest fileName") os.Exit(1) } p, e := exec.LookPath(os.Args[1]) if e != nil { fmt.Fprintf(os.Stderr, "型情報=[%T]\n", e) ee := e.(*exec.Error) fmt.Fprintf(os.Stderr, "name=[%s]\n", ee.Name) fmt.Fprintf(os.Stderr, "err=[%v]\n", ee.Err) } else { fmt.Printf("Path=[%s]\n", p) } }
◆実行結果(Windows)
◆実行結果(Linux)
Error関数
func (e *Error) Error() string
◆テストコード
package main import ( "fmt" "os" "os/exec" ) func main() { if len(os.Args) != 2 { fmt.Fprintln(os.Stderr, "usage:ErrorTest fileName") os.Exit(1) } p, e := exec.LookPath(os.Args[1]) if e != nil { ee := e.(*exec.Error) fmt.Fprintf(os.Stderr, "Err()=[%s]\n", ee.Error()) } else { fmt.Printf("Path=[%s]\n", p) } }
◆実行結果(Linux)
Unwrap関数
func (e *Error) Unwrap() error
◆テストコード
package main import ( "fmt" "os" "os/exec" ) func main() { if len(os.Args) != 2 { fmt.Fprintln(os.Stderr, "usage:ErrorTest fileName") os.Exit(1) } p, e := exec.LookPath(os.Args[1]) if e != nil { ee := e.(*exec.Error) fmt.Fprintf(os.Stderr, "Unwrap=[%s]\n", ee.Unwrap().Error()) } else { fmt.Printf("Path=[%s]\n", p) } }
◆実行結果(Linux)
最後までご覧いただきありがとうございます