Merge 将多个读取器合并为一个 从任何有数据的读取器接收值
(readers ...*Reader[T])
| 498 | // Merge 将多个读取器合并为一个 |
| 499 | // 从任何有数据的读取器接收值 |
| 500 | func Merge[T any](readers ...*Reader[T]) *Reader[T] { |
| 501 | if len(readers) == 0 { |
| 502 | return nil |
| 503 | } |
| 504 | if len(readers) == 1 { |
| 505 | return readers[0] |
| 506 | } |
| 507 | |
| 508 | streams := make([]*stream[T], len(readers)) |
| 509 | for i, r := range readers { |
| 510 | streams[i] = readerToStream(r) |
| 511 | } |
| 512 | |
| 513 | return &Reader[T]{ |
| 514 | typ: readerTypeMulti, |
| 515 | msr: newMultiStreamReader(streams, nil), |
| 516 | } |
| 517 | } |
| 518 | |
| 519 | // MergeNamed 将多个命名读取器合并为一个 |
| 520 | // 当源流结束时,返回带有流名称的 SourceEOF |