Использование пакета osext
Это функция ExecutableFolder()
, которая возвращает абсолютный путь к папке обеспечения, где в настоящее время работает программа исполняемым Reside (полезно для хрон рабочих мест). Это кросс-платформа.
Online documentation
package main
import (
"github.com/kardianos/osext"
"fmt"
"log"
)
func main() {
folderPath, err := osext.ExecutableFolder()
if err != nil {
log.Fatal(err)
}
fmt.Println(folderPath)
}
Вы также можете получить полный путь к исполняемому файлу (аналог __FILE__
):
package main
import (
"github.com/kardianos/osext"
"fmt"
)
func main() {
exeAbsolutePath, _ := osext.Executable()
fmt.Println(exeAbsolutePath)
}
Хороший ответ ... На самом деле моя программа Go должна загружать данные из внешних файлов, и я хочу быть уверенным, что она их найдет, без необходимости устанавливать абсолютный путь к этим файлам. – Blacksad
Возможно, вы просто хотите установить соглашение для своего приложения и загрузить его файлы относительно того, откуда он работает. или используйте пакет флагов и сообщите ему, где находятся файлы в командной строке. –
Да, ты прав. Благодаря ! – Blacksad