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

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

使用嵌套映射連接字符串時(shí)無(wú)法獲得適當(dāng)?shù)妮敵?/h1>

我是 galang 的新手,我想用嵌套地圖連接字符串。下面是給出的虛擬代碼,指出我的錯(cuò)誤。提前致謝    import (    "fmt"    "strconv"    )    func main() {    str := "Hello @John martin #sosos &Hi @William "    var key string = ""    var ku int = 0    var kh int = 0    var kg int = 0    var id string    var col string     var retMap = make(map[string]map[string]string)    retMap[key] = make(map[string]string)        for i := 0; i < len(str); i++ {      //fmt.Println(string(str[i]), " >> ", str[i])      if str[i] == 64 || str[i] == 35 || str[i] == 38 {        if str[i] == 64 {          ku++          key = "user"          id = strconv.Itoa(ku)      } else if str[i] == 35 {        kh++        key = "hashTag"        id = strconv.Itoa(kh)      } else {        kg++        key = "group"        id = strconv.Itoa(kg)      }      retMap[key] = make(map[string]string) // If not assign here then it gives runtime error "panic: assignment to entry in nil map"      for j := i + 1; j < len(str); j++ {        col = col + string(str[j])        if str[j] == 32 {          j = len(str) - 1          retMap[key][id] = retMap[key][id] + col          col = " "        }      }    } } fmt.Println("Final String ",retMap)}輸出:最終字符串 map[group:map[1: Hi] user:map[2: William] hashTag:map[1: sosos]]預(yù)期輸出:最終字符串 map[group:map[1: Hi] user:map[1: John, 2: William] hashTag:map[1: sosos ]]它可能是重復(fù)的
查看完整描述

1 回答

?
瀟湘沐

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

問(wèn)題是您正在每個(gè)調(diào)用中初始化“key”的嵌套映射,因此它始終覆蓋以前的數(shù)據(jù)。


所以只需改變你的線路


retMap[key] = make(map[string]string) // If not assign here then it gives runtime error "panic: assignment to entry in nil map"

到下面應(yīng)該使您的代碼工作:


=_, ok := retMap[key]

if !ok {

    retMap[key] = make(map[string]string)

}

我只是檢查為“鍵”存儲(chǔ)的值是否存在,如果不存在則初始化一個(gè)新映射。


更新:


我還重寫了您的代碼,以使用 Go 提供的一些內(nèi)置函數(shù),如strings.Split或strings.Trim*函數(shù)。它可能會(huì)有所幫助。


package main


import (

    "fmt"

    "strconv"

    "strings"

)


const str = "Hello @John martin #sosos &Hi @William "


func main() {

    retMap := make(map[string]map[string]string)

    retMap["group"] = make(map[string]string)

    retMap["user"] = make(map[string]string)

    retMap["hashTag"] = make(map[string]string)

    list := strings.Split(strings.TrimSpace(str), " ")


    for _, value := range list {

        firstCharacter := string(value[0])

        if firstCharacter == "@" {

            retMap["user"][strconv.Itoa(len(retMap["user"])+1)] = strings.TrimLeft(value, "@")

        } else if firstCharacter == "&" {

            retMap["group"][strconv.Itoa(len(retMap["group"])+1)] = strings.TrimLeft(value, "&")

        } else if firstCharacter == "#" {

            retMap["hashTag"][strconv.Itoa(len(retMap["hashTag"])+1)] = strings.TrimLeft(value, "#")

        }

    }


    fmt.Println("Final String ", retMap)

}


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

添加回答

了解更多

舉報(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)