Для меня пока загадка, в каких случаях использовать поинтер, а в каких нет.
func (s Something) ThisFuncName(bug NotFeature) Something {
}
func (s *Something) ThisFuncName(bug *NotFeature) *Something {
}
Скорости работы могут быть разные, иногда быстрее работает копирование, но чаще поинтер.
У поинтера можно нарваться на сайд эффект(просто по ошибке) и потом долго дебажить, что не очень приятно.
Пытался написать разные бенчмарки, но понятной картины это не дает. Иногда разница в скорости в десятки раз...
Есть какие либо правила как лучше писать для высоконагруженных приложений? Или где почитать про лучшие практики на эту тему?
Также неименованные функции часто сильно тормозят, особенно если в них внутрь передаешь параметр какой-нить структуры, но опять же не всегда. Видимо по возможности нужно обходится без них?