Why empty return despite function signature?

There is an example of using deferred functions at https://blog.golang.org/defer-panic-and-recover

func CopyFile(dstName, srcName string) (written int64, err error) {
    src, err := os.Open(srcName)
    if err != nil {
        return
    }

    dst, err := os.Create(dstName)
    if err != nil {
        return
    }

    written, err = io.Copy(dst, src)
    dst.Close()
    src.Close()
    return
}

Why it returns nothing despite function signature states (written int64, err error)?

It uses named return values

3 Likes

Because you have named what to return in the returning variables.