Я хочу открыть данный файл "directory/subdirectory/file.txt" в golang.Каков рекомендуемый способ выразить такой путь независимым от ОС способом (т. Е. Обратный слеш в Windows, прямой слэш в Mac и Linux)?Что-то вроде модуля Python os.path?
"directory/subdirectory/file.txt"
os.path
Для создания и управления путями, специфичными для ОС, непосредственно используйте os.PathSeparator и пакет path/filepath.
os.PathSeparator
path/filepath
Альтернативный метод - всегда использовать '/' и path в вашей программе.Пакет path использует '/' в качестве разделителя пути независимо от ОС.Перед открытием или созданием файла преобразуйте / -разделенный путь в строку пути, специфичную для ОС, вызвав filepath.FromSlash(path string).Пути, возвращаемые ОС, можно преобразовать в / -разделенные пути, вызвав filepath.ToSlash(path string).
'/'
path
filepath.FromSlash(path string)
filepath.ToSlash(path string)
Используйте path/filepath вместо path. path предназначен только для путей, разделенных косой чертой (например, используемых в URL), тогда как path/filepath управляет путями в разных операционных системах.
На основе ответов @EvanShaw и этого блога был создан следующий код:
package main import ( "fmt" "os" "path/filepath" ) func main() { p := filepath.FromSlash("path/to/file") fmt.Println("Path: " + p) }
возвращает:
Path: path\to\file
в Windows.
Go рассматривает косую черту (/) как универсальный разделитель для всех платформ [1] ."directory/subdirectory/file.txt" будет открыто правильно независимо от операционной системы времени выполнения.
/