У меня есть программа, которая принимает папку назначения, в которой будут созданы файлы. Моя программа должна иметь возможность обрабатывать абсолютные пути, а также относительные пути. Моя проблема в том, что я не знаю, как развернуть ~
в домашний каталог.
Моя функция для расширения адресата выглядит так. Если заданный путь является абсолютным, он ничего не делает, иначе он соединяет относительный путь с текущим рабочим каталогом.
import "path"
import "os"
// var destination *String is the user input
func expandPath() {
if path.IsAbs(*destination) {
return
}
cwd, err := os.Getwd()
checkError(err)
*destination = path.Join(cwd, *destination)
}
Так как path.Join
не расширяется ~
, он не работает, если пользователь передает что-то вроде ~/Downloads
в качестве адресата.
Как я могу решить это на кросс-платформенном пути?