Чтобы получить текущий рабочий каталог в Go, вы можете использовать пакет os для получения текущего пути к рабочему каталогу. Вот пример:

package main

import (
    "fmt"
    "os"
)

func main() {
    wd, err := os.Getwd()
    if err != nil {
        fmt.Println("Error:", err)
    }
    fmt.Println("Current working directory:", wd)
}

Функция Getwd возвращает текущий рабочий каталог в виде строки и ошибку, если возникла проблема с получением каталога. Затем вы можете использовать эту строку в своем коде по мере необходимости.

Еще один способ получить исполняемый файл версии Go 1.8 (выпущен в феврале 2017 г.) — использовать os.Executable:

func Executable() (строка, ошибка)

Executable возвращает путь к исполняемому файлу, запустившему текущий процесс. Нет гарантии, что путь по-прежнему указывает на правильный исполняемый файл. Если для запуска процесса использовалась символическая ссылка, в зависимости от операционной системы результатом может быть символическая ссылка или путь, на который она указывает. Если нужен стабильный результат, path/filepath.EvalSymlinks может помочь.

Пример:

package main

import (
    "fmt"
    "os"
    "path/filepath"
)

func main() {
    ex, err := os.Executable()
    if err != nil {
        panic(err)
    }

    exPath := filepath.Dir(ex)
    fmt.Println(exPath)
}

Чтобы получить только каталог исполняемого файла, вы можете использовать path/filepath.Dir.