Проблема не в отладчике, проблема в вашем коде.
Когда вы пишете
go func() {
if err := http.ListenAndServe(":3000", router); err != nil {
log.Fatal(err)
}
}()
, вы создаете новую программу, полностью независимую от основного потока..
Это означает, что выполнение вашего main:
- Create router
- Создание и выполнение goroutine
- end of main, returnи убить всех потомков
Нет ничего, что заставляло бы главного ожидать выполнения и завершения процедуры go.
Поскольку http.ListenAndServe
создает поток, который бесконечно ждет новых подключений, вы неНе нужно создавать его внутри программы.
Следовательно, просто удалите блок go func() {
, и все будет в порядке.