Должен ли я просто скопировать/вставить код TempFile и добавить параметр суффикса?
Это было бы в одну сторону.
Другой способ это сделать быстро - нефть - реализация, как в this project:
// TempFileName generates a temporary filename for use in testing or whatever
func TempFileName(prefix, suffix string) string {
randBytes := make([]byte, 16)
rand.Read(randBytes)
return filepath.Join(os.TempDir(), prefix+hex.EncodeToString(randBytes)+suffix)
}
Как James Henstridgecomments ниже, это сырой функции:
Эта функция может возвращать имена файлов, которые уже существуют, например. Такой API должен создавать файл, открывая его с помощью O_CREAT | O_EXCL
, чтобы гарантировать, что никто другой не создает файл между выбором имени и созданием файла.
Эта грубая функция выше иллюстрирует использование rand.Read()
для сгенерирования имени файла.
Но другие чеки все в io/ioutil/tempfile.go
.
3of3suggests, чтобы использовать функцию в math.rand
вместо копирования random number generator in io/ioutil/tempfile.go
.
Почему важно, чтобы вам нужен суффикс? – fuz
Я бы скопировал/вставлял код и двигался дальше. Чтобы это было просто, я использовал функцию в math/rand вместо копирования генератора случайных чисел в io/ioutil. –