Source File
iterator.go
Belonging Package
go.opentelemetry.io/otel/label
package label
type MergeItererator struct {
one oneIterator
two oneIterator
current KeyValue
}
type oneIterator struct {
iter Iterator
done bool
label KeyValue
}
func (, *Set) MergeItererator {
:= MergeItererator{
one: makeOne(.Iter()),
two: makeOne(.Iter()),
}
return
}
func ( Iterator) oneIterator {
:= oneIterator{
iter: ,
}
.advance()
return
}
func ( *oneIterator) () {
if .done = !.iter.Next(); !.done {
.label = .iter.Label()
}
}
func ( *MergeItererator) () bool {
if .one.done && .two.done {
return false
}
if .one.done {
.current = .two.label
.two.advance()
return true
}
if .two.done {
.current = .one.label
.one.advance()
return true
}
if .one.label.Key == .two.label.Key {
.current = .one.label // first iterator label value wins
.one.advance()
.two.advance()
return true
}
if .one.label.Key < .two.label.Key {
.current = .one.label
.one.advance()
return true
}
.current = .two.label
.two.advance()
return true
}
func ( *MergeItererator) () KeyValue {
return .current
![]() |
The pages are generated with Golds v0.3.2-preview. (GOOS=darwin GOARCH=amd64) Golds is a Go 101 project developed by Tapir Liu. PR and bug reports are welcome and can be submitted to the issue list. Please follow @Go100and1 (reachable from the left QR code) to get the latest news of Golds. |