迭代器示例集合增加切片批量添加功能
This commit is contained in:
		
							parent
							
								
									5febea0733
								
							
						
					
					
						commit
						9c8037fc96
					
				| @ -2,6 +2,7 @@ package iterator | |||||||
| 
 | 
 | ||||||
| import ( | import ( | ||||||
| 	"iter" | 	"iter" | ||||||
|  | 	"slices" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| // Set 集合
 | // Set 集合
 | ||||||
| @ -23,6 +24,18 @@ func NewOrderedSet[T comparable]() *OrderedSet[T] { | |||||||
| 	return &OrderedSet[T]{make([]T, 0), NewSet[T]()} | 	return &OrderedSet[T]{make([]T, 0), NewSet[T]()} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | func (s Set[T]) FromSlice(data []T) { | ||||||
|  | 	for v := range slices.Values(data) { | ||||||
|  | 		s.Add(v) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func (s *OrderedSet[T]) FromSlice(data []T) { | ||||||
|  | 	for v := range slices.Values(data) { | ||||||
|  | 		s.Add(v) | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| func (s Set[T]) Add(e T) { | func (s Set[T]) Add(e T) { | ||||||
| 	s.m[e] = struct{}{} | 	s.m[e] = struct{}{} | ||||||
| } | } | ||||||
| @ -90,7 +103,7 @@ func (s Set[T]) FilterMap(fn func(T) bool) iter.Seq[T] { | |||||||
| func (s *OrderedSet[T]) FilterMap(fn func(T) bool) iter.Seq[T] { | func (s *OrderedSet[T]) FilterMap(fn func(T) bool) iter.Seq[T] { | ||||||
| 	return func(yield func(T) bool) { | 	return func(yield func(T) bool) { | ||||||
| 		// 迭代有序切片
 | 		// 迭代有序切片
 | ||||||
| 		for _, v := range s.ordered { | 		for v := range slices.Values(s.ordered) { | ||||||
| 			if !fn(v) { | 			if !fn(v) { | ||||||
| 				continue | 				continue | ||||||
| 			} | 			} | ||||||
|  | |||||||
| @ -3,7 +3,6 @@ package iterator | |||||||
| import ( | import ( | ||||||
| 	"github.com/stretchr/testify/assert" | 	"github.com/stretchr/testify/assert" | ||||||
| 	"iter" | 	"iter" | ||||||
| 	"slices" |  | ||||||
| 	"testing" | 	"testing" | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| @ -15,11 +14,9 @@ func TestSet(t *testing.T) { | |||||||
| 		"gopher", | 		"gopher", | ||||||
| 		"javaer", | 		"javaer", | ||||||
| 	} | 	} | ||||||
|  | 	s.FromSlice(list) | ||||||
| 	var pull, push, filter []string | 	var pull, push, filter []string | ||||||
| 	expected := list[:3] | 	expected := list[:3] | ||||||
| 	for v := range slices.Values(list) { |  | ||||||
| 		s.Add(v) |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	// 只推
 | 	// 只推
 | ||||||
| 	for v := range s.All() { | 	for v := range s.All() { | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user