Иван обнови решението на 18.10.2018 00:10 (преди 10 месеца)
Да, определено не трябва да я добавяш.
Чак по-късно видях, че има и гайд.
В случая използването на defer
тук е малко странно заради наличието на променливата next
. Ако разгледаш останалите решения ще видиш как там defer
позволява да не се създава допълнителна променлива.
Бях го направил само с initial (затова остана и defer, в сегашния вид не е нужен), но не ми изглеждаше приятно. В крайна сметка това, което съм предал е микс от двете.
Не харесвам промяна на променливи в defer - нужно е допълнително осмисляне на целия код. Например тук:
func foo() (bar int) {
bar = 2
defer func() { bar += 1 }()
return bar
}
defer променя върната стойност, защото връщаме именуван резултат, и вместо 2, резултатът е 3.
Да, определено не трябва да я добавяш.
Чак по-късно видях, че има и гайд.
В случая използването на
defer
тук е малко странно заради наличието на променливатаnext
. Ако разгледаш останалите решения ще видиш как тамdefer
позволява да не се създава допълнителна променлива.Бях го направил само с initial (затова остана и defer, в сегашния вид не е нужен), но не ми изглеждаше приятно. В крайна сметка това, което съм предал е микс от двете. Не харесвам промяна на променливи в defer - нужно е допълнително осмисляне на целия код. Например тук:
func foo() (bar int) { bar = 2 defer func() { bar += 1 }() return bar }
defer променя върната стойност, защото връщаме именуван резултат, и вместо 2, резултатът е 3.