Diseñe una interfaz pública (API) de biblioteca para copiar archivos en Go: encabezados de funciones y tipos, lo más conveniente posible para los desarrolladores.
sobes.tech AI
Respuesta de la IA
go package filecopy
import "io"
// CopyFile copia un archivo desde src a dst. // Si dst no existe, se crea un nuevo archivo. // Devuelve la cantidad de bytes copiados y un error si ocurre. func CopyFile(srcPath, dstPath string) (int64, error)
// CopyFileWithOptions copia un archivo con opciones adicionales. // Por ejemplo, se puede especificar un búfer, si sobrescribir el archivo, copiar permisos, etc. type CopyOptions struct { Overwrite bool // si sobrescribir el archivo si existe BufferSize int // tamaño del búfer para copiar, 0 — usar valor predeterminado PreservePermissions bool // copiar permisos }
func CopyFileWithOptions(srcPath, dstPath string, opts CopyOptions) (int64, error)
// Copy copia datos desde io.Reader a io.Writer con opciones. // Permite copiar no solo archivos, sino también cualquier flujo de datos. func Copy(dst io.Writer, src io.Reader, opts CopyOptions) (int64, error)
Este interfaz es conveniente porque:
- Existe un método simple CopyFile para copiado básico de archivos.
- Hay un método extendido con opciones para una configuración más fina.
- Existe un Copy universal para flujos, lo que aumenta la flexibilidad.
- Se utilizan tipos y nombres comprensibles, acordes con el estilo Go.