Search
Write a publication
Pull to refresh

Comments 7

Хотелось бы всё же, чтобы были приведены условия, при которых не рекомендуется использовать указатель на слайс. Аргумент, что из-за ускорения на микросекунды лучше использовать указатель на слайс, выглядит неубедительно. Иначе во всех проектах только такой вариант стали бы использовать, это же микрооптимизация, и будем использовать везде вместо передачи по значению. 

спасибо, очень хорошее замечание! Я добавил ссылки на материал по этой теме, чтобы статья сильно не разрослась. Передача и возврат указателей - частый вопрос не только новичков. Общее правило - передавать по значению, так же и отдавать. Это будет быстро и безопасно. Но как всегда есть исключения :)

Спасибо, вижу дополнения. Но я не для себя (я в курсе), а для тех, кто будет читать и неправильно интерпретирует, что по указателю передавать слайс лучше. А потом смотришь на такой «оптимизированный» проект, полностью состоящий из такого, и хочется забыть его навсегда. 

Слайс — динамический массив, состоящий из трех элементов

Точно массив из трех элементов, а не структура с тремя полями?

Выделять слайс таким способом `slice := make([]int, 8)` зачастую приводит к ошибкам - при записи значения через индекс можно попасть за границы капасити и получить панику, а при append не очевидно, что добавляешь значения к нулям и после slice = append(s, 1,2,3) получится {0,0,0...,1,2,3}. На мой взгляд в большинстве случаев вариант создания `slice := make([]int, 0, 8)` и добавления значений через append более предпочтительный.

Да, я тоже предпочитаю append, также видел много ошибок, когда выделяется заполненный нулями слайс, и к нему делают append 😀. Достаточно распространенная ошибка. Спасибо!

Sign up to leave a comment.