defer может менять именованный результат: return 2 присваивает n = 2, затем отложенные вызовы, и только потом значение уходит наружу. Реализуйте withTrace: допишите "[done]" к именованному результату.
- Задача
- Решение
- Обсуждение
WithTrace: defer меняет результат
GolangРешение
func withTrace() (result string) {
defer func() { result += "[done]" }()
return "работа"
}