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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

golang為什么在實(shí)現(xiàn)層次樹時(shí)會(huì)覆蓋值?

golang為什么在實(shí)現(xiàn)層次樹時(shí)會(huì)覆蓋值?

Go
精慕HU 2022-10-24 09:01:18
package mainimport (    "encoding/json"    "fmt")type employee struct {    Name      string      `json:"name"`    Id        int         `json:"id,omitempty"`    ManagerId int         `json:"managerid"`    Reporters []employee `json:"reporters,omitempty"`}// type employees struct {//  employees []employee `json:"employee"`// }type EmployeeList struct {    employees map[int]employee    root  employee}func NewEmployeeList() *EmployeeList {    var el EmployeeList    el.employees = make(map[int]employee)    return &el}func (el *EmployeeList) CreateMap(employeesInfo []employee) {        for _ , emp := range employeesInfo {        e := employee{            Name : emp.Name,            Id: emp.Id,            ManagerId: emp.ManagerId,        }        el.employees[emp.Id] = e        if(emp.ManagerId == 0){            el.root = e            fmt.Println("CreateMap",el.root)        }    }    fmt.Println("CreateMap2",el.root,el.employees)}func (el *EmployeeList) getReportersById(empId int) []employee {         reporters := []employee{}    for _ , employee := range el.employees {        if(employee.ManagerId == empId){            reporters = append(reporters, employee)        }    }    return reporters}func (el *EmployeeList) maketree(e *employee) {      //e := root    e.Reporters = el.getReportersById(e.Id)    if(true){        fmt.Println("maketree",e.Id,e.Name,e.Reporters)    }    // e.Reporters = reporters    if(len(e.Reporters) == 0){        return    }    for _ , reporterEmployee := range e.Reporters {        el.maketree(&reporterEmployee);    }}我正在嘗試從 json 創(chuàng)建一棵樹來(lái)存儲(chǔ)員工列表。問題是,雖然創(chuàng)建樹的值被正確存儲(chǔ),但是當(dāng)我想打印層次結(jié)構(gòu)樹時(shí),它們?cè)谥骱瘮?shù)中失去了價(jià)值。有人可以幫我為什么不存儲(chǔ)價(jià)值嗎?我還添加了日志以進(jìn)行檢查。
查看完整描述

1 回答

?
jeck貓

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊

你的CreateMap方法:


func (el EmployeeList) CreateMap(employeesInfo []employee) {

    ...

}

應(yīng)該:


func (el *EmployeeList) CreateMap(employeesInfo []employee) {

    //---^

    ....

}

所以這el是一個(gè)指針。否則,emplist當(dāng)您說(shuō):


emplist.CreateMap(rawEmployeesInfo);

所以你做了很多工作來(lái)創(chuàng)建你的地圖,然后把它扔掉。


查看完整回答
反對(duì) 回復(fù) 2022-10-24
  • 1 回答
  • 0 關(guān)注
  • 138 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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