Я использую io/ioutil
для чтения небольшого текстового файла:
fileBytes, err := ioutil.ReadFile("/absolute/path/to/file.txt")
И это прекрасно работает, но это не совсем переносимо. В моем случае файлы, которые я хочу открыть, находятся в моем GOPATH, например:
/Users/matt/Dev/go/src/github.com/mholt/mypackage/data/file.txt
Поскольку папка data
находится рядом с исходным кодом, я бы хотел просто указать относительный путь:
data/file.txt
Но потом я получаю такую ошибку:
паника: открыть данные / файл.txt: нет такого файла или каталога
Как я могу открывать файлы, используя их относительный путь, особенно если они находятся рядом с моим кодом Go?
(Обратите внимание, что мой вопрос конкретно об открытии файлов относительно GOPATH. Открытие файлов с использованием любого относительного пути в Go так же просто, как указание относительного пути вместо абсолютного пути; файлы открываются относительно рабочего каталога скомпилированного двоичного файла. В моем случае я хочу открывать файлы относительно того места, где был скомпилирован двоичный файл. Оглядываясь назад, это плохое дизайнерское решение.)