声明的返回值类型和实际的返回值类型不一致怎么也不报错呢?
copy定义的返回值是(w int64, err error)。在代码执行结束的时候直接return。并没有按照定义的返回。程序也没报错,这是我疑惑的地方
package main
import (
"io"
"os"
)
func main() {
copy("6.go","aaa.go")
}
func copy(src, dst string) (w int64, err error) {
// 打开文件
file, err := os.Open(src)
if err != nil {
panic(err)
return
}
defer file.Close()
file1, err1 := os.Create(dst)
if err1 != nil {
panic(err)
return
}
defer file1.Close()
io.Copy(file1, file)
return
}
Return Statement
如果返回值都有名字的话,return 后面的可以什么都没有。
==================================================
不是因为返回值没写,而是因为panic
之后的代码是执行不到的。