Я не ожидаю, что это будет лучший ответ, но это тот, который я только что нашел.Я надеялся на более специфичный для go, но в то же время type в linux является встроенным по умолчанию, доступным в bash и sh (alpine).
Вы можете проверитьСделайте это самостоятельно, запустив type type
, что даст:
Тип - это встроенная оболочка
Использование в go
будет выглядеть так:
b, err := exec.Command("type", "go").Output()
if err != nil {
/* 'type' is not available on the O/S */
}
goPath := strings.TrimPrefix(strings.TrimSuffix(string(b), "\n"), "go is ")
Причина, по которой требуются функции Trim
, заключается в том, что вывод будет выглядеть следующим образом:
go is / usr / local / go / bin / go \ n
Это не самый лучший способ сделать это, но он работает.