Проектирайте публичен интерфейс (API) на библиотека за копиране на файлове в Go — заглавия на функции и типове, максимално удобни за разработчиците.
sobes.tech AI
Отговор от AI
go package filecopy
import "io"
// CopyFile копира файл от src до dst. // Ако dst не съществува, се създава нов файл. // Връща броя на копираните байтове и грешка, ако възникне. func CopyFile(srcPath, dstPath string) (int64, error)
// CopyFileWithOptions копира файл с допълнителни опции. // Например, може да се посочи буфер, дали да се презапише файлът, да се копират разрешения и т.н. type CopyOptions struct { Overwrite bool // дали да се презапише файлът, ако съществува BufferSize int // размер на буфера за копиране, 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 стила.