Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

not 75% of all code but 75 of all code that is doing anything with meaningful practically. the classic example of a simple copyFile func.

  func CopyFile(src, dst string) error {
    r, err := os.Open(src)
    if err != nil {
     return err
    }
    defer r.Close()

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

   if _, err := io.Copy(w, r); err != nil {
     return err
    }
    if err := w.Close(); err != nil {
     return err
    }
  }


You could almost shorten it to:

  if  r, err := os.Open(src); err != nil {
    return err
  }
  defer r.Close()
But then r is not in scope for the r.Close proper


could you in theory break this into other functions or no?

You could have smaller discrete functions that abstract the handling of each action a little bit and be more reusable, or is that not possible in Go


like Open, Copy...?

These shorter functions need to signal their failure somehow, so calling them looks exactly like the example.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: