MergeNamed 将多个命名读取器合并为一个 当源流结束时,返回带有流名称的 SourceEOF
(readers map[string]*Reader[T])
| 519 | // MergeNamed 将多个命名读取器合并为一个 |
| 520 | // 当源流结束时,返回带有流名称的 SourceEOF |
| 521 | func MergeNamed[T any](readers map[string]*Reader[T]) *Reader[T] { |
| 522 | if len(readers) == 0 { |
| 523 | return nil |
| 524 | } |
| 525 | |
| 526 | streams := make([]*stream[T], 0, len(readers)) |
| 527 | names := make([]string, 0, len(readers)) |
| 528 | |
| 529 | for name, r := range readers { |
| 530 | streams = append(streams, readerToStream(r)) |
| 531 | names = append(names, name) |
| 532 | } |
| 533 | |
| 534 | return &Reader[T]{ |
| 535 | typ: readerTypeMulti, |
| 536 | msr: newMultiStreamReader(streams, names), |
| 537 | } |
| 538 | } |
| 539 | |
| 540 | func readerToStream[T any](r *Reader[T]) *stream[T] { |
| 541 | switch r.typ { |