Ответ 1
Полезный совет:
Используйте os.Getwd()
и filepath.Join()
, чтобы найти абсолютный путь относительного пути к файлу.
Пример
// File: showPath.go
package main
import (
"fmt"
"path/filepath"
"os"
)
func main(){
cwd, _ := os.Getwd()
fmt.Println( filepath.Join( cwd, "./template/index.gtpl" ) )
}
Во-первых, я рекомендую, чтобы папка template
содержала только шаблоны для представления и не переходила к файлам.
Далее, чтобы облегчить жизнь, запустите только файлы из корневого каталога проекта. Это поможет сделать путь к файлу согласованным по всем файлам go, вложенным в подкаталоги. Относительные пути к файлам начинаются с текущего рабочего каталога, из которого вызывается программа.
Пример отображения изменения в текущем рабочем каталоге
[email protected]:~/go/src/test$ go run showPath.go
/home/user/go/src/test/template/index.gtpl
[email protected]:~/go/src/test$ cd newFolder/
[email protected]:~/go/src/test/newFolder$ go run ../showPath.go
/home/user/go/src/test/newFolder/template/index.gtpl
Что касается тестовых файлов, вы можете запускать отдельные тестовые файлы, указав имя файла.
go test foo/foo_test.go
Наконец, используйте базовый путь и пакет path/filepath
для создания путей к файлам.
Пример:
var (
basePath = "./public"
templatePath = filepath.Join(basePath, "template")
indexFile = filepath.Join(templatePath, "index.gtpl")
)