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

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

使用“動(dòng)態(tài)”鍵從地圖中提取值

使用“動(dòng)態(tài)”鍵從地圖中提取值

Go
MMMHUHU 2022-12-19 19:57:04
來自javascript背景,剛開始接觸Golang。我正在學(xué)習(xí) Golang 中的所有新術(shù)語(yǔ),并創(chuàng)建新問題,因?yàn)槲艺也坏轿倚枰拇鸢福赡苁怯捎谌狈σ阉鞯男g(shù)語(yǔ)知識(shí))我創(chuàng)建了一個(gè)自定義類型,創(chuàng)建了一個(gè)類型數(shù)組,我想創(chuàng)建一個(gè)函數(shù),我可以在其中檢索特定鍵的所有值,并返回所有值的數(shù)組(本例中為品牌)type Car struct {  brand string  units int}....var cars []Carvar singleCar Car//So i have a loop here and inside the for-loop, i create many single carssingleCar = Car {   brand: "Mercedes",   units: 20}//and i append the singleCar into carscars = append(cars, singleCar)現(xiàn)在我想做的是創(chuàng)建一個(gè)可以檢索所有品牌的函數(shù),我嘗試執(zhí)行以下操作。我打算擁有key一個(gè)動(dòng)態(tài)值,這樣我就可以通過特定的鍵進(jìn)行搜索,例如品牌、型號(hào)、容量等。func getUniqueByKey(v []Car, key string) []string {    var combined []string    for i := range v {        combined = append(combined, v[i][key])         //this line returns error -        //invalid operation: cannot index v[i] (map index expression of type Car)compilerNonIndexableOperand    }    return combined    //This is suppose to return ["Mercedes", "Honda", "Ferrari"]}如果我getUniqueByKey(cars, "brand")在這個(gè)例子中使用 where,上面的函數(shù)應(yīng)該可以工作,品牌是key. 但我不知道語(yǔ)法所以它返回錯(cuò)誤。
查看完整描述

2 回答

?
慕姐8265434

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

似乎您正在嘗試使用 slice 訪問器獲取屬性,這在 Go 中不起作用。您需要為每個(gè)屬性編寫一個(gè)函數(shù)。這是品牌的示例:


func getUniqueBrands(v []Car) []string {

    var combined []string

    tempMap := make(map[string]bool)


    for _, c := range v {

        if _, p := tempMap[c.brand]; !p {

            tempMap[c.brand] = true

            combined = append(combined, c.brand)

        }

    }

    return combined

}

另外,請(qǐng)注意此處用于獲取 Car 值的 for 循環(huán)。Gorange可用于僅遍歷索引或同時(shí)遍歷索引和值。通過分配給 來丟棄索引_。


我建議重新使用此代碼并添加一個(gè) switch-case 塊以獲得您想要的結(jié)果。如果需要返回多種類型,請(qǐng)使用interface{}類型斷言。




查看完整回答
反對(duì) 回復(fù) 2022-12-19
?
蠱毒傳說

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

也許您可以將您的結(jié)構(gòu)編組為 json 數(shù)據(jù),然后將其轉(zhuǎn)換為地圖。示例代碼:


package main


import (

    "encoding/json"

    "fmt"

)


type RandomStruct struct {

    FieldA string

    FieldB int

    FieldC string

    RandomFieldD bool

    RandomFieldE interface{}

}


func main() {

    fieldName := "FieldC"

    randomStruct := RandomStruct{

        FieldA:       "a",

        FieldB:       5,

        FieldC:       "c",

        RandomFieldD: false,

        RandomFieldE: map[string]string{"innerFieldA": "??"},

    }

    randomStructs := make([]RandomStruct, 0)

    randomStructs = append(randomStructs, randomStruct, randomStruct, randomStruct)

    res := FetchRandomFieldAndConcat(randomStructs, fieldName)

    fmt.Println(res)

}


func FetchRandomFieldAndConcat(randomStructs []RandomStruct, fieldName string) []interface{} {

    res := make([]interface{}, 0)

    for _, randomStruct := range randomStructs {

        jsonData, _ := json.Marshal(randomStruct)

        jsonMap := make(map[string]interface{})

        err := json.Unmarshal(jsonData, &jsonMap)

        if err != nil {

            fmt.Println(err)

            // panic(err)

        }

        value, exists := jsonMap[fieldName]

        if exists {

            res = append(res, value)

        }

    }

    return res

}


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

添加回答

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