*net.UDPConn is a packet-oriented protocol. So it makes sense for it to implement the net.PacketConn interface. However, it is confusing why it also implements the net.Conn interface, which is a connection-oriented protocol ( also implemented by *net.TCPConn) .