Получить текущее имя файла после создания исполняемого файла - PullRequest
0 голосов
/ 14 февраля 2020

Я могу получить текущий каталог и имя текущего .go файла, но если я соберу .exe из файла с go build, тогда я все равно получу имя .go.

... / Project / Test / testfile. go

После сборки testfile.go с go build у меня есть такие:

1) ... / Project / Test / testfile. go

2) ... / Project / Test / main.exe

Когда я выполняю main.exe, я получаю testfile Но я хочу получить имя main после выполнение main.exe

package main

import (
    "errors"
    "fmt"
    "path/filepath"
    "runtime"
    "strings"
)

func GetFileName() string {
    _, fpath, _, ok := runtime.Caller(0)
    if !ok {
        err := errors.New("failed to get filename")
        panic(err)
    }
    filename := filepath.Base(fpath)
    filename = strings.Replace(filename, ".go", "", 1)
    return filename
}

func main() {
    fmt.Print(GetFileName())
}

1 Ответ

3 голосов
/ 14 февраля 2020

Пакет os предоставляет os.Args[0] для получения имени исполняемого файла или, если вы хотите весь путь, вы можете использовать os.Executable, как @ Peter предлагает

...