os.Create
返回错误作为第二个返回值。错误本身是一个接口type error interface { Error() string }
。碰巧具有Error
方法的任何数据类型都将实现该接口并可以进行分配。
在大多数情况下,仅打印错误就足够了,但是在此示例中,您想ENOSPC
显式处理(设备上不留空间)。该os
包返回*os.pathError
在这种情况下,错误的实现,如果你想对错误的访问更多的信息,即一切旁边Error() string
,方法,你就必须把它转换。
该语句e, ok := err.(*os.pathError)
是类型断言。它将检查接口值是否err
包含*os.pathError
as具体类型,并将其返回。如果接口中存储了其他类型(可能有其他类型的error
接口实现),则它将仅返回零值和false,即nil, false
在这种情况下。