func NewIndexer(keyFunc KeyFunc, indexers Indexers) Indexer {
    return &cache{
    cacheStorage: NewThreadSafeStore(indexers, Indices{}),
    keyFunc: keyFunc,
    }
    }

    keyFunc是DeletionHandlingMetaNamespaceKeyFunc,按照meta.GetNamespace() + “/“ + meta.GetName()

    threadSafeMap 是 ThreadSafeStore的实现
    threadSafeMap中:

    type threadSafeMap struct {
    lock sync.RWMutex
    items map[string]interface{} key是keyFunc算出来,value就是informer监听的对象
    // indexers maps a name to an IndexFunc
    _indexers Indexers 存储了所有的IndexFunc
    // indices maps a name to an Index _
    indices Indices 存储了所有IndexFunc的结果
    }

    Indices 是两层 map
    第一层,key是index name
    第二层,key是根据IndexFunc算出来的一个结果,value是一个set,是keyFunc算出来的值的集合 (value中每一个值都是可以从items中查询到结果的)