Sobes.tech
Senior

Projete uma interface pública (API) de biblioteca para copiar ficheiros em Go — cabeçalhos de funções e tipos, o mais conveniente possível para os desenvolvedores.

sobes.tech IA

Resposta da IA

go package filecopy

import "io"

// CopyFile copia um arquivo de src para dst. // Se dst não existir, um novo arquivo é criado. // Retorna a quantidade de bytes copiados e um erro, se ocorrer. func CopyFile(srcPath, dstPath string) (int64, error)

// CopyFileWithOptions copia um arquivo com opções adicionais. // Por exemplo, pode-se especificar um buffer, se deve sobrescrever o arquivo, copiar permissões, etc. type CopyOptions struct { Overwrite bool // sobrescrever o arquivo se existir BufferSize int // tamanho do buffer para cópia, 0 — usar valor padrão PreservePermissions bool // copiar permissões }

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

// Copy copia dados de io.Reader para io.Writer com opções. // Permite copiar não apenas arquivos, mas também quaisquer fluxos de dados. func Copy(dst io.Writer, src io.Reader, opts CopyOptions) (int64, error)


Esta interface é conveniente porque:
- Existe um método simples CopyFile para cópia básica de arquivos.
- Existe um método estendido com opções para uma configuração mais detalhada.
- Existe um Copy universal para fluxos, o que aumenta a flexibilidade.
- São utilizados tipos e nomes compreensíveis, de acordo com o estilo Go.