Go в своей стандартной библиотеке предоставляет инструменты для создания временного файла и временной директории. Для этого можно использовать пакет "os", в котором есть функции MkdirTemp и CreateTemp. Но для удаления временного файла и директории нужно явно указать их удаление для этого можно использовать os.RemoveAll и os.Remove соответственно.
Для начала рассмотрим создание временного файла
package main import ( "log" "os" "os/signal" ) func main() { f, err := os.CreateTemp("tmp/example/", "file.*.tmp") if err != nil { log.Fatal(err) } defer os.Remove(f.Name())
defer f.Close() data := []byte("Hello file!") if _, err := f.Write(data); err != nil { log.Fatal(err) } c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) <- c }
Здесь создаётся временный файл, для этого используется os.CreateTemp, которая принимает директорию в которой будет создан файл и имя файла. Имя файла "солится" случайной строкой. По умолчанию случайная часть добавляется в конец файла, но ей можно управлять указывая специальный символ "*", на месте которого она и окажется.
Сразу после создания файла не забудем прописать в defer закрытие файла и его удаление.
В конце примера остановимся, чтобы посмотреть что находится в указанной директории. ( file.2974259792.tmp).
Далее рассмотрим пример с созданием временого каталога (директории)
package main import ( "log" "os" "os/signal" ) func main() { name, err := os.MkdirTemp("/tmp/", "example") if err != nil { log.Fatal(err) } defer os.RemoveAll(name) c := make(chan os.Signal, 1) signal.Notify(c, os.Interrupt) <- c }
В данной ситуации код говорит сам за себя. Всё предельно просто.