func Experimental(src, dst string) error {
//goto is blocked with err == nil
goto r, err := os.Open(src)
defer r.Close()
goto w, err := os.Create(dst)
goto v, err := io.Copy(w, r)
goto err := w.Close()
return nil
//alternative
goto err {
r, err := os.Open(src)
defer r.Close()
w, err := os.Create(dst)
v, err := io.Copy(w, r)
err := w.Close()
return nil
}
return err:
w.Close()
os.Remove(dst)
fmt.Errorf("copy %s %s: %v", src, dst, err)
}