第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何避免我的數(shù)據(jù)結(jié)構(gòu)中的嵌套映射分配?

如何避免我的數(shù)據(jù)結(jié)構(gòu)中的嵌套映射分配?

Go
慕尼黑5688855 2022-12-26 15:43:03
我有一個下面的結(jié)構(gòu),其中有一個嵌套映射,CustomersIndex它分配了一堆內(nèi)部映射,導(dǎo)致內(nèi)存增加。我對它進行了分析,所以我注意到了這一點。我想看看是否有任何方法可以重新設(shè)計CustomersIndex不使用嵌套映射的數(shù)據(jù)結(jié)構(gòu)?const (    departmentsKey = "departments")type CustomerManifest struct {    Customers      []definitions.Customer    CustomersIndex map[int]map[int]definitions.Customer}這是我在下面的代碼中填充它的方式:func updateData(mdmCache *mdm.Cache) map[string]interface{} {    memCache := mdmCache.MemCache()    var customers []definitions.Customer    var customersIndex = map[int]map[int]definitions.Customer{}    for _, r := range memCache.Customer {        customer := definitions.Customer{            Id:           int(r.Id),            SetId:        int(r.DepartmentSetId),        }        customers = append(customers, customer)        _, yes := customersIndex[customer.SetId]        if !yes {            customersIndex[customer.SetId] = make(map[int]definitions.Customer)        }        customersIndex[customer.SetId][customer.Id] = customer    }    return map[string]interface{}{        departmentsKey: &CustomerManifest{Customers: customers, CustomersIndex: customersIndex},    }}這就是我獲取CustomersIndex嵌套地圖的方式。func (c *Client) GetCustomerIndex() map[int]map[int]definitions.Customer {    c.mutex.RLock()    defer c.mutex.RUnlock()    customersIndex := c.data[departmentsKey].(*CustomerManifest).CustomersIndex    return customersIndex}有什么方法可以CustomersIndex讓我不必使用嵌套地圖來設(shè)計我的地圖嗎?
查看完整描述

1 回答

?
慕哥6287543

TA貢獻1831條經(jīng)驗 獲得超10個贊

在將值放入其中之前,您不需要分配地圖。


type CustomerManifest struct {

    Customers      []definitions.Customer

    CustomersIndex map[int]map[int]definitions.Customer

}


func (m *CustomerManifest) AddCustomerDefinition(x, y int, customer definitions.Customer) {

    // Get the existing map, if exists.

    innerMap := m.CustomersIndex[x]

    // If it doesn't exist, allocate it.

    if innerMap == nil {

        innerMap = make(map[int]definitions.Customer)

        m.CustomersIndex[x] = innerMap

    }

    // Add the value to the inner map, which now exists.

    innerMap[y] = customer

}


查看完整回答
反對 回復(fù) 2022-12-26
  • 1 回答
  • 0 關(guān)注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號