Sobes.tech
Senior

Navrhněte veřejné rozhraní (API) knihovny pro kopírování souborů v Go — hlavičky funkcí a typů, co nejpohodlnější pro vývojáře.

sobes.tech AI

Odpověď od AI

go package filecopy

import "io"

// CopyFile kopíruje soubor ze src do dst. // Pokud dst neexistuje, vytvoří se nový soubor. // Vrací počet zkopírovaných bajtů a chybu, pokud nastane. func CopyFile(srcPath, dstPath string) (int64, error)

// CopyFileWithOptions kopíruje soubor s dodatečnými možnostmi. // Například lze určit buffer, přepsat soubor, kopírovat oprávnění atd. type CopyOptions struct { Overwrite bool // přepsat soubor, pokud existuje BufferSize int // velikost bufferu pro kopírování, 0 — použít výchozí hodnotu PreservePermissions bool // kopírovat oprávnění }

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

// Copy kopíruje data z io.Reader do io.Writer s možnostmi. // Umožňuje kopírovat nejen soubory, ale i jakékoli datové proudy. func Copy(dst io.Writer, src io.Reader, opts CopyOptions) (int64, error)


Tato rozhraní je pohodlná, protože:
- Existuje jednoduchá metoda CopyFile pro základní kopírování souborů.
- Existuje rozšířená metoda s možnostmi pro jemnější nastavení.
- Existuje univerzální Copy pro proudy, což zvyšuje flexibilitu.
- Používají se srozumitelné typy a názvy, odpovídající stylu Go.