func (d *decoder) decodeSlice(src hl7.Data, dst reflect.Value) { dstType := dst.Type() dstElemType := dstType.Elem() sliceType := reflect.SliceOf(dstElemType) srcLen := src.Len() dstSlice := reflect.MakeSlice(sliceType, srcLen, srcLen) for i := 0; i < srcLen; i++ { currentField := dstSlice.Index(i) if newSrc, ok := src.Index(i); ok { d.decode(newSrc, currentField) } } dst.Set(dstSlice) }