Переносной код OS для ссылки на файлы шаблонов

#go

#Вперед

Вопрос:

Ниже приведен код, который выполняется в Windows:

 wd, err := os.Getwd()
if err != nil {
    log.Fatal(err)
}

t, err := template.ParseFiles(wd   "\src\html\index.html")
  

сбой в Linux из-за обратной косой черты ( )

Как сделать этот код переносимым в ОС?

Комментарии:

1. Package filepath implements utility routines for manipulating filename paths in a way compatible with the target operating system-defined file paths. путь /filepath

2. Синтаксический анализ файлов(filepath.Join(wd, filepath. FromSlash(«src/html/index /html»)))

3. IIRC, Windows теперь также может обрабатывать / пути. Я годами не пользовался Windows, но я видел, как она используется в дикой природе, так почему бы не попробовать это?

4. Вам также не нужно добавлять wd вручную. Предполагается, что любой относительный путь (не начинающийся с косой черты или буквы диска) имеет корни в рабочем каталоге.

5. @Adrian При использовании t, err := template.ParseFiles("html/index.html") я получаю ошибку: http: panic serving [::1]:54221: open html/index.html: The system cannot find the path specified.

Ответ №1:

В общем случае используется путь к файлу.Присоединиться — это путь:

 path := filepath.Join("separate", "me")
  

Но путь к файлу.На мой взгляд, FromSlash намного более удобочитаем:

 path := filepath.FromSlash("separate/me")