Простой случай: когда порт 8080
уже используется, у вас будет ошибка:
listen tcp :8080: bind: address already in use
Другой случай: http.Serve
вызывает srv.trackListener
, что также может привести к сбою в случае, если go
не удалось добавить слушателя.
Также: http.Serve
вызывает l.Accept()
, что также может привести к сбою ...
Так что есть много возможных случаев ...
Кроме того, go
идиоматично проверять все ошибки, возвращаемые любой функцией.
PS: Лучше иметь избыточную проверку ошибок, чем тихую не работающую программу (imho) ...