Здравствуйте, Pzz, Вы писали:
Pzz>>>Или, например, если мы от мегабайтного слайса отсубслайсим 5 байт, а про остальное "забудем", в памяти все равно будет занят мегабайт, потому что отсубслайсенные 5 байт все равно указывают на мегабайтный буфер, и GC его не приберет. Наивная идея организовать очередь, дописывая в конец слайса и откусывая от начала породит конструкцию, которая в конце концов сожрет всю память. Ну и т.д.
O>>Ты так рассказываешь, как будто это чтото хорошее.
Pzz>Я так рассказываю, как будто это то, что есть. А хорошее оно или плохое, пусть каждый решает в меру своих потребностей.
Забавный факт. В жаве кажется до 8 версии substring работал именно так: был один общий массив символов и offset/length. Т.е. маленькая строка могла внутри держать массив на мегабайт, к примеру. Но потом поменяли на копирование.
Но в целом я думаю, что поведение go лучше. Программист сам должен понимать, когда данные надо копировать, а по умолчанию оно должно работать максимально быстро. Скажем сейчас в Java невозможно повторить то поведение (без написания своего класса String).