code: func (req *NetlinkRequest) Serialize() []byte {
  	length := unix.SizeofNlMsghdr
  	dataBytes := make([][]byte, len(req.Data))
  	for i, data := range req.Data {
  		dataBytes[i] = data.Serialize()
  		length = length + len(dataBytes[i])
  	}
  	length += len(req.RawData)
  
  	req.Len = uint32(length)
  	b := make([]byte, length)
  	hdr := (*(*[unix.SizeofNlMsghdr]byte)(unsafe.Pointer(req)))[:]
  	next := unix.SizeofNlMsghdr
  	copy(b[0:next], hdr)
  	for _, data := range dataBytes {
  		for _, dataByte := range data {
  			b[next] = dataByte
  			next = next + 1
  		}
  	}
  	// Add the raw data if any
  	if len(req.RawData) > 0 {
  		copy(b[next:length], req.RawData)
  	}
  	return b
  }
docs: // Serialize the Netlink Request into a byte array