Go中的错误(* os.PathError)是什么?

当我阅读时:http :

//golang.org/doc/effective_go.html#errors

我发现了这样一行:err.(*os.PathError)在这种情况下:

for try := 0; try < 2; try++ {

file, err = os.Create(filename)

if err == nil {

return

}

if e, ok := err.(*os.PathError); ok && e.Err == syscall.ENOSPC {

deleteTempFiles() // Recover some space.

continue

}

return }

err.(*os.PathError)Go 到底是什么?

回答:

os.Create返回错误作为第二个返回值。错误本身是一个接口

type error interface { Error() string }。碰巧具有Error方法的任何数据类型都将实现该接口并可以进行分配。

在大多数情况下,仅打印错误就足够了,但是在此示例中,您想ENOSPC显式处理(设备上不留空间)。该os包返回*os.PathError在这种情况下,错误的实现,如果你想对错误的访问更多的信息,即一切旁边Error()

string,方法,你就必须把它转换。

该语句e, ok :=

err.(*os.PathError)是类型断言。它将检查接口值是否err包含*os.PathErroras具体类型,并将其返回。如果接口中存储了其他类型(可能有其他类型的error接口实现),则它将仅返回零值和false,即nil,

false在这种情况下。

以上是 Go中的错误(* os.PathError)是什么? 的全部内容, 来源链接: utcz.com/qa/428515.html

回到顶部