I've found net/http package source code to be useful on this matter, as the package contains production-ready servers and clients implemented in Go itself.
Yes Erlang also has good libraries for that. My question wasn't as much about libraries as about supervision trees.
Having a part of your program fail and restarted if needed. For what I understand so far that isn't possible. It would have to be done at the OS process level instead.