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

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

Go 中的 N 叉樹(shù)

Go 中的 N 叉樹(shù)

我正在評(píng)估 Go 來(lái)替換 Node.js 基礎(chǔ)設(shè)施,但我不確定如何創(chuàng)建一個(gè)結(jié)構(gòu)來(lái)表示 N 元樹(shù)。在 JavaScript 中,我解析一個(gè)文件以構(gòu)建任意深度的地理位置層次結(jié)構(gòu)。下面是一個(gè)例子:{  'country1': {    'area1': {      'town1': {},       'town2': {}    },    'area2': {      'town3': {}    }  }}城鎮(zhèn)可以擴(kuò)展為特定的道路等等。層次結(jié)構(gòu)沒(méi)有固定的深度。如何在 Go 中創(chuàng)建等效結(jié)構(gòu)?
查看完整描述

2 回答

?
30秒到達(dá)戰(zhàn)場(chǎng)

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

如果您打算擁有任意深度,那么創(chuàng)建一個(gè)可以嵌套的默認(rèn)結(jié)構(gòu)可能是值得的:


type area struct {

    Name string

    //Any other area info

    Sections []*area

}

創(chuàng)建新的 struct 對(duì)象時(shí)不會(huì)初始化指針切片,因此它是一個(gè)有效的構(gòu)造。聲明a.Sections = new([]*area)并附加area指向它的指針。您將有l(wèi)en(a.Sections)一個(gè)for range用于樹(shù)遍歷的循環(huán)。


解析和遍歷將遞歸編碼,因此如果您以不同的方式處理不同的區(qū)域,則需要一個(gè)類(lèi)型標(biāo)識(shí)符。


查看完整回答
反對(duì) 回復(fù) 2021-11-08
?
嗶嗶one

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

讓我們回顧一下層次結(jié)構(gòu)。

  • 在頂層,您將國(guó)家/地區(qū)名稱(chēng)映射到國(guó)家/地區(qū)對(duì)象。

  • 每個(gè)國(guó)家對(duì)象將區(qū)域名稱(chēng)映射到區(qū)域?qū)ο蟆?/p>

  • 每個(gè)區(qū)域?qū)ο髮⒊擎?zhèn)名稱(chēng)映射到城鎮(zhèn)對(duì)象。

在 Go 中,您可以將層次結(jié)構(gòu)的每一層實(shí)現(xiàn)為 a map[string]*Something,最后一層由Town包含有關(guān)城鎮(zhèn)的各種信息的對(duì)象組成:

type Country map[string]*Area


type Area map[string]*Town


type Town struct {

    Name                string

    Population          int

    Latitude, Longitude float64

}

您在問(wèn)題中給出的示例層次結(jié)構(gòu)如下所示:


countries := map[string]*Country{

    "country1": &Country{

        "area1": &Area{

            "town1": &Town{},

            "town2": &Town{},

        },

        "area2": &Area{

            "town3": &Town{},

        },

    },

}

如果您不想映射到具體類(lèi)型,可以使用map[string]interface{},但是您將需要類(lèi)型斷言來(lái)處理值。以下是從 Zack Bloom 關(guān)于Go 和 JSON的文章中提取的代碼示例:


var parsed map[string]interface{}

data := []byte(`

    {

        "id": "k34rAT4",

        "age": 24

    }

`)

err := json.Unmarshal(data, &parsed)

idString := parsed["id"].(string)


查看完整回答
反對(duì) 回復(fù) 2021-11-08
  • 2 回答
  • 0 關(guān)注
  • 283 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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