code: func (s *SubscribePacket) Unpack(b io.Reader) error {
  	var err error
  	s.MessageID, err = decodeUint16(b)
  	if err != nil {
  		return err
  	}
  	payloadLength := s.FixedHeader.RemainingLength - 2
  	for payloadLength > 0 {
  		topic, err := decodeString(b)
  		if err != nil {
  			return err
  		}
  		s.Topics = append(s.Topics, topic)
  		qos, err := decodeByte(b)
  		if err != nil {
  			return err
  		}
  		s.Qoss = append(s.Qoss, qos)
  		payloadLength -= 2 + len(topic) + 1 //2 bytes of string length, plus string, plus 1 byte for Qos
  	}
  
  	return nil
  }
docs: //Unpack decodes the details of a ControlPacket after the fixed
  //header has been read