Sobes.tech
Senior

Σχεδιάστε μια δημόσια διεπαφή (API) βιβλιοθήκης για αντιγραφή αρχείων σε Go — επικεφαλίδες συναρτήσεων και τύπων, όσο το δυνατόν πιο βολικές για τους προγραμματιστές.

sobes.tech AI

Απάντηση από AI

go package filecopy

import "io"

// CopyFile αντιγράφει ένα αρχείο από src σε dst. // Αν το dst δεν υπάρχει, δημιουργείται ένα νέο αρχείο. // Επιστρέφει τον αριθμό των αντιγραμμένων bytes και ένα σφάλμα, αν προκύψει. func CopyFile(srcPath, dstPath string) (int64, error)

// CopyFileWithOptions αντιγράφει ένα αρχείο με πρόσθετες επιλογές. // Για παράδειγμα, μπορείτε να ορίσετε ένα buffer, αν θα αντικαταστήσει το αρχείο, να αντιγράψει δικαιώματα κ.λπ. type CopyOptions struct { Overwrite bool // αν θα αντικαταστήσει το αρχείο αν υπάρχει BufferSize int // μέγεθος buffer για αντιγραφή, 0 — χρήση προεπιλεγμένης τιμής PreservePermissions bool // αντιγραφή δικαιωμάτων }

func CopyFileWithOptions(srcPath, dstPath string, opts CopyOptions) (int64, error)

// Copy αντιγράφει δεδομένα από io.Reader σε io.Writer με επιλογές. // Επιτρέπει την αντιγραφή όχι μόνο αρχείων, αλλά και οποιωνδήποτε ροών δεδομένων. func Copy(dst io.Writer, src io.Reader, opts CopyOptions) (int64, error)


Αυτή η διεπαφή είναι βολική επειδή:
- Υπάρχει μια απλή μέθοδος CopyFile για βασική αντιγραφή αρχείων.
- Υπάρχει μια επεκταμένη μέθοδος με επιλογές για πιο λεπτομερή ρύθμιση.
- Υπάρχει ένας καθολικός Copy για ροές, που αυξάνει την ευελιξία.
- Χρησιμοποιούνται κατανοητοί τύποι και ονόματα, σύμφωνα με το στυλ Go.