Comments 6
У вас вроде опечатка
for i := range inputs {
for _, i := range inputs {
Попытка бросить в читателя кусок случайного кода не работает
Немного не по теме, но, кажется, отчёты pvs-studio на хабре именно такие статьи из себя и представляют.
Статья хорошая, спасибо!
Знать как устроены структуры данных неплохо. Однако стоит заметить, что если задача стоит в эффективной и быстрой сериализации/десериализации, то вместо изобретения своих форматов передачи и дальнейших героических усилий по их оптимизации, стоит посмотреть на protobuf: он максимально быстр и использует минимальный объем памяти, т к использует тотже unsafe, только там все протестировано вдоль и поперек и точно все работает как нужно на той версии go, которая у вас будет. А в качестве бонуса: поддержка других языков, расширяемость и никаких проблем с определением начала и конца сообщения (а еще grpc)
Я хоть в ГО и не умею , но с интересом прочитал до конца. Спасибо.
Начиная с Go 1.20 лучше всего использовать следующий вариант:
func StringToBytes(s string) []byte {
return unsafe.Slice(unsafe.StringData(s), len(s))
}
func BytesToString(b []byte) string {
return unsafe.String(unsafe.SliceData(b), len(b))
}
Кот, меняющий строки