Goland не может получить правильный текущий путь при запуске и отладке?

Когда я вызываю следующий код,

 func GetCurrentDirectory() string {
    dir, err := filepath.Abs(filepath.Dir(os.Args[0])) 

он возвращает:

/ частный / вар / папки / cg / mwzlhrjs5y55ny553g6xz9tr0000gn / T

Безусловно, это временный путь, я исключил, что это мой текущий каталог, а не временный каталог.

dir, err := filepath.Abs("")

может мне помочь, но я должен судить, работает ли режим отладки в goland или нет


person Jim Green    schedule 23.10.2018    source источник
comment
Я исключил, что путь - это мой текущий каталог. Почему вы этого ожидаете? Вы используете путь к исполняемому файлу, и это временная сборка. Что не так с os.Getwd?   -  person Volker    schedule 23.10.2018
comment
Потому что иногда я буду полагаться на текущий сценарий оболочки.   -  person Jim Green    schedule 24.10.2018


Ответы (2)


Чтобы исправить это, перейдите к Run | Edit Configuration... | <name of your configuration> и измените свойство Working Directory, чтобы изменить рабочий каталог приложения, или настройте Output directory, чтобы настроить, где создается и запускается двоичный файл (по умолчанию он находится во временном каталоге вашего ОПЕРАЦИОННЫЕ СИСТЕМЫ).

person dlsniper    schedule 23.10.2018
comment
Спасибо, это работает, когда я устанавливаю выходной каталог. - person Jim Green; 24.10.2018
comment
Это имеет смысл, поскольку вы читаете расположение самого двоичного файла, а не рабочего каталога. - person dlsniper; 24.10.2018

Рекомендую добавить параметр отладки.

package main

import (
    "flag"
    "fmt"
)

func main() {
    var debug bool
    flag.BoolVar(&debug, "d", false, "debug")
    flag.Parse()
    fmt.Println(debug)
}

Затем передайте -d его при запуске программы из среды IDE.

person Grzegorz Żur    schedule 23.10.2018
comment
Есть ли в библиотеке go вариант управления в режиме IDE (запуск или отладка) или в исполняемом режиме? - person Jim Green; 24.10.2018