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

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

使用任何值類型的映射作為函數(shù)參數(shù)?

使用任何值類型的映射作為函數(shù)參數(shù)?

Go
30秒到達戰(zhàn)場 2022-10-10 10:30:40
我正在嘗試創(chuàng)建一個以 amap作為參數(shù)的函數(shù),其中地圖使用string鍵,但值可以是任何類型。我如何使這項工作順利進行?我嘗試將map[string]interface{}其用作函數(shù)的參數(shù)類型,但這似乎不起作用,例如在將 amap[string]int作為參數(shù)傳遞時。關于這種方法有什么問題以及是否有辦法實現(xiàn)這一點的任何解釋?
查看完整描述

1 回答

?
慕容森

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

如果函數(shù)參數(shù)是類型,map[string]interface{}那么您需要將它傳遞給map[string]interface{}(而map[string]int不是 map[string]interface{})。

這是一個常見問題,在常見問題解答中進行了介紹(重點關注切片,但同樣的原則也適用于地圖)。

最好的方法實際上取決于您要完成的工作。您可以執(zhí)行以下操作(操場):

package main


import (

    "fmt"

)


func main() {

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


    v["blah"] = 3

    test(v)


    v["panic"] = "string"

    test(v)


}


func test(in map[string]interface{}) {

    var ok bool

    converted := make(map[string]int)

    for k, v := range in {

        converted[k], ok = v.(int)

        if !ok {

            panic("Unexpected type in map")

        }

    }

    fmt.Println(converted)

}

或接受interface{}允許任何東西傳入(操場):


package main


import (

    "fmt"

)


func main() {

    v := make(map[string]int)

    v["blah"] = 3

    test(v)


    w := make(map[string]string)

    w["next"] = "string"

    test(w)


    x := make(map[string]bool)

    x["panic"] = true

    test(x)


}


func test(in interface{}) {

    switch z := in.(type) {

    case map[string]int:

        fmt.Printf("dealing with map[string]int: %v\n", z)

    case map[string]string:

        fmt.Printf("dealing with map[string]string: %v\n", z)

    default:

        panic(fmt.Sprintf("unsupported type: %T", z))

    }

    // You could also use reflection here...

}


查看完整回答
反對 回復 2022-10-10
  • 1 回答
  • 0 關注
  • 114 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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