Это возможно и со стандартной библиотекой.Вы можете использовать / объединить:
Без проверки ошибок (например, если переданный путь содержит папки), следующая функцияделает то, что вы хотите:
func convert(s string) string {
dir := path.Dir(s)
return path.Join(dir, path.Base(dir))
}
Тестирование:
fmt.Println(convert("/Users/i0564454/go/src/projectA/node"))
Вывод (попробуйте на Go Playground ).
/Users/i0564454/go/src/projectA/projectA
Обратите внимание, что пакет path
обрабатывает разделенные слешем пути.Если вам нужно / нужно поддерживать пути, специфичные для ОС, используйте идентичные функции пакета path/filepath
.