Эквивалент dirname в Go
Я изучаю Go, я не знаю, пропустил ли я что-то, но после поиска я задаюсь вопросом: есть ли у dirname в NodeJS эквивалент в Go? Как получить текущий каталог в коде Go, или я должен его реализовать?
2 ответа
В Go вы можете использовать os.Getwd
который возвращает корневое имя пути, соответствующее текущему каталогу.
dir, err := os.Getwd()
if err != nil {
fmt.Errorf("Dir %v does not exists", err)
}
Я одновременно изучаю V и Golang, и, по-видимому, есть функция, вызывающая ближайший эквивалент. Согласно этому источнику , вы запускаетеos.Executable()
чтобы получить каталог, из которого выполняется код, а затем выполнитеfilepath.Dir()
чтобы получить только абсолютный путь без имени исполняемого файла.
Я просто скопировал этот фрагмент из ссылки, но вот как вы получаете__dirname
в Го:
package main
import (
"fmt"
"os"
"path/filepath"
)
func main() {
// Getting the path name for the executable
// that started the current process.
pathExecutable, err := os.Executable()
if err != nil {
panic(err)
}
// Getting the directory path/name
dirPathExecutable := filepath.Dir(pathExecutable)
fmt.Println("Directory of the currently running file...")
fmt.Println(dirPathExecutable)
}
И я согласен, есть разница между тем, что сделал предыдущий ответ. Он также работает аналогично в V, где он всегда будет получать текущий рабочий каталог, из которого вы запускали код. Итак, если вы находитесь в своем домашнем каталоге, при запускеos.Getwd()
, он распечатает домашний каталог, а не то, где вы выполнили код.