Решите ту же проблему, не заводя именованную функцию: оберните тело цикла в анонимную функцию с немедленным вызовом и поставьте defer внутри неё.
- Задача
- Решение
- Обсуждение
OpenAll: анонимная функция
GolangРешение
func openAll(paths []string) []string {
log := []string{}
for _, path := range paths {
func() {
log = append(log, "открыт "+path)
defer func() { log = append(log, "закрыт "+path) }()
}()
}
return log
}