Vá obter caminho para o arquivo atual

Recentemente, precisei obter o caminho absoluto do arquivo atual de um arquivo go. Você primeiro precisa obter o pacote runtime que faz parte do Go

import "runtime"

Em seguida, você pode usar o Callermétodo e capturar o nome do arquivo. Precisamos atribuir a esta função 1para instruí-la a pular um chamador. Você pode ler mais sobre a função aqui

_, filename, _, ok := runtime.Caller(1)

O nome do arquivo será o caminho até o diretório atual do arquivo que chama esta função. O okobjetivo é verificar se a chamada de função conseguiu localizar as informações solicitadas.

Então, na prática, se você deseja obter um arquivo de configuração em um diretório e em um diretório de configuração, você pode fazer o seguinte

filepath := path.Join(path.Dir(filename), "../config/settings.toml")