Ваша реализация должна выделить буфер размером с весь файл. Это расточительно, вы можете просто прочитать 64 КБ, написать 64 КБ и повторить для следующих блоков. Если вы прочитаете все это целиком, а затем напишете все это, вы в конечном итоге будете дважды загружать и выгружать весь файл.
Возможно, несколько потоков могут читать / писать отдельно (при условии, что чтение остается впереди). Это может ускорить процесс.
При аппаратной поддержке может даже не потребоваться данные до go на всем пути к ЦП. Тем не менее, ваша реализация, вероятно, сделает это. Компилятору будет очень сложно понять, что вы делаете с fileContent, а что нет.
Существует множество других приемов, которые может использовать реализация filesystem::copy
. Вы могли go увидеть, как он закодирован, существует множество открытых реализаций.
Однако есть предостережение: реализация стандартной библиотеки может полагаться на специфические c поведения, которые язык не гарантирует. Таким образом, вы не можете просто скопировать код в другой компилятор / архитектуру / платформу.