# utf8reverse Реализуйте функцию `reverse.Reverse`. Функция принимает на вход юникодную строку и должна возвращать строку, состоящую из тех же юникодных рун, но записанных в обратном порядке. Каждый байт входной строки, который не образует корректную utf8 последовательность, нужно заменить на unicode replacement character. Обратите внимание в тестах, что некоторые графемы распадаются при обращении строки. Данный эффект связан с тем, что в юникоде некоторые руны умеют комбинироваться в одну графему. Ваша реализация должна быть достаточно эффективна. На нашем бенчмарке в тестовой системе она должна работать не хуже авторского решения. Конкретно, можно делать не больше одной аллокации. Это значит, что кроме выходной строки дополнительную память выделять нельзя. (Изучите тип [`strings.Builder`](https://pkg.go.dev/strings#Builder)) ``` goos: linux goarch: amd64 pkg: gitlab.com/manytask/itmo-go/public/utf8/reverse BenchmarkReverse-4 395078 2763 ns/op 1792 B/op 2 allocs/op PASS ``` ### Примеры Как запустить все тесты: ``` go test -v ./utf8/reverse/... ```