Although there are many p2p networking implementation but libp2p and ÐΞVp2p are the most popular ones.
libp2p is used in IFPS where as ÐΞVp2p is used in Ethereum. Both are well maintained and upto date p2p networking library and supports sub protocols to be developed on top of them.
Both have supported features like NAT traversal, encrypted streams, routing, peer discovery.
Going through the example code in their respective repositories is a good starting point.
Edited: Here are some sample programs for ÐΞVp2p go implementation.