err.(*os.PathError) 这个用法 不太明白
来源:4-1 结构体和方法

陆鹏1
2018-12-08
func writeFile(filename string) {
file, err := os.OpenFile(filename,
os.O_EXCL|os.O_CREATE|os.O_WRONLY, 0666)
if err != nil {
err.Error()
if pathError, ok := err.(*os.PathError); !ok {
panic(err)
} else {
fmt.Printf("%s, %s, %s\n",
pathError.Op,
pathError.Path,
pathError.Err)
}
return
}
老师 err.(*os.PathError) 这个用法 我不太明白 err 返回的是一个 PathError 结构体的 地址 这里的意思 是断言 吗?
写回答
1回答
-
ccmouse
2018-12-08
是的,err是一个接口,它到底是什么我们不知道。所以通过这种类型断言的写法来查看。后面跟个ok表示它到底是不是一个*PathError,然后根据是或不是来分别执行不同操作
00
相似问题