gpt4 book ai didi

go - Go 中的 err.(*os.PathError) 是什么?

转载 作者:IT老高 更新时间:2023-10-28 13:09:43 26 4
gpt4 key购买 nike

当我阅读时:http://golang.org/doc/effective_go.html#errors

我发现这样一行:err.(*os.PathError) in this context:

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 }

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

最佳答案

os.Create 返回错误作为第二个返回值。错误本身是 interface 输入错误接口(interface) { Error() string }。任何碰巧有 Error 方法的数据类型都将实现该接口(interface)并且可以被分配。

在大多数情况下,仅打印错误就足够了,但在此示例中,您希望显式处理 ENOSPC(设备上没有剩余空间)。 os 包在这种情况下返回一个 *os.PathError 作为错误实现,如果您想访问有关错误的其他信息,即 Error( ) 字符串,方法,你必须转换它。

语句e, ok := err.(*os.PathError)type assertion .它将检查接口(interface)值 err 是否包含 *os.PathError 作为具体类型并将其返回。如果接口(interface)中存储了另一种类型(可能还有其他类型实现了 error 接口(interface)),那么它将简单地返回 zero value和 false,即 nil, false 在这种情况下。

关于go - Go 中的 err.(*os.PathError) 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18340411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com