У меня есть простая процедура, которая вызывает локальный двоичный файл (rsync), который указывает на временный текстовый файл, содержащий список файлов для работы, с каталогом назначения.В конце процедуры я удаляю временный файл.Здесь нет проблем.
Но в некоторых случаях необходимо использовать один и тот же временный файл, когда в цикле диапазона есть два адресата, например:
destDirs := []string{"dir1/", "dir2/"}
for _, dest := range destDirs {
go launchRoutine(tempfile.Name(), dest)
}
Так как launchRoutine можетдля запуска потребуется некоторое время, и, поскольку это веб-приложение, ожидание завершения процедуры не подходит.
Вопрос в том, где лучше всего разместить код os.Remove (tempfile)?
Вариант 1 - отправить launchRoutine фрагмент вместо строки и выполнить цикл по нему в launchRoutine, иудалите файл тогда.
Вариант 2 - отправить bool в launchRoutine, чтобы удалить файл, когда цикл диапазона находится на последней итерации.
Вариант 3 - Не знаете?Какие-нибудь идиоматические способы, о которых я не думал?
Решение, с которым я согласился, комментарии @ RJS подтверждают правильность решения:
destDirs := []string{"dir1/", "dir2/"}
for _, dest := range destDirs {
go launchRoutine(tempfile.Name(), dest)
}
os.Remove(tempfile.Name())
Спасибо!