Эквивалент 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(), он распечатает домашний каталог, а не то, где вы выполнили код.

Другие вопросы по тегам