1234567891011121314151617181920212223242526272829303132 |
- package ordered
- type Map[K comparable, V any] struct {
- s []K
- m map[K]V
- }
- func NewMap[K comparable, V any]() *Map[K, V] {
- return &Map[K, V]{
- s: make([]K, 0),
- m: make(map[K]V),
- }
- }
- type iter_Seq2[K, V any] func(func(K, V) bool)
- func (m *Map[K, V]) Items() iter_Seq2[K, V] {
- return func(yield func(K, V) bool) {
- for _, k := range m.s {
- if !yield(k, m.m[k]) {
- return
- }
- }
- }
- }
- func (m *Map[K, V]) Add(k K, v V) {
- if _, ok := m.m[k]; !ok {
- m.s = append(m.s, k)
- m.m[k] = v
- }
- }
|