Если я правильно понял ваш вопрос, вы хотите выполнить оба параметра nikto()
и whois()
параллельно и подождать, пока оба не вернутся.Чтобы дождаться завершения набора программ, sync.WaitGroup
- хороший способ заархивировать это.Для вас это может выглядеть примерно так:
func main(){
fmt.Printf("Please input URL")
fmt.Scanln(&url)
var wg sync.WaitGroup
wg.Add(2)
go func() {
defer wg.Done()
nikto()
}()
go func() {
defer wg.Done()
whois()
}()
wg.Wait()
}
Здесь wg.Add(2)
сообщает WaitGroup, что мы будем ждать 2 программы.
Затем ваши две функции вызываются внутри небольших функций-оболочек, которые также вызывают wg.Done()
после завершения каждой функции.Это сообщает WaitGroup, что функция завершена.Ключевое слово defer
просто говорит Go выполнить вызов функции, как только вернется окружающая функция.Также обратите внимание на ключевое слово go
перед двумя вызовами функций-оболочек, что приводит к тому, что выполнение происходит в 2-х отдельных подпрограммах.
Наконец, после того, как обе процедуры были запущены, вызов wg.Wait()
внутри основных функциональных блоков до тех пор, пока wg.Done()
не был вызван дважды, что произойдет, когда оба nikto()
и whois()
завершатся.