Sobes.tech
Senior

Проектирайте публичен интерфейс (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 стила.