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

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

編寫一個函數(shù)以從映射中獲取字符串鍵的切片,無論映射是什么值類型

編寫一個函數(shù)以從映射中獲取字符串鍵的切片,無論映射是什么值類型

Go
白衣非少年 2023-07-10 09:25:32
我想編寫一個函數(shù)來從映射中獲取所有鍵作為字符串切片,其中鍵類型是字符串,值可以是任何其他類型。像這樣,但可以有任何類型的 map[string]... 作為輸入。func mapLowCaseKeys(v map[string]string) []string {    keys := make([]string, len(v))    i := 0    for key := range v {        keys[i] = strings.ToLower(key)        i++    }    return keys}其實我想Object.keys()用Javascript實現(xiàn)。我嘗試過用作map[string]interface{}函數(shù)的參數(shù)類型,但它不能只將任何特定的映射傳遞給該函數(shù),這在 golang 中可能嗎?
查看完整描述

1 回答

?
互換的青春

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

MapKeys您可以在包中使用reflect來做到這一點

MapKeys 返回一個切片,其中包含映射中存在的所有鍵(按未指定的順序)。如果 v 的 Kind 不是 Map,它會發(fā)生恐慌。如果 v 表示 nil 映射,則它返回一個空切片。

下面給出了一個示例

package main


import (

? ? "fmt"

? ? "reflect"

)


func main() {

? ? fmt.Println(mapLowCaseKeys(map[string]float64{

? ? ? ? "key1" : 1.2,

? ? }))


? ? fmt.Println(mapLowCaseKeys(map[string]interface{} {

? ? ? ? "key1" : 1.2,

? ? ? ? "key2" : map[string]string{"kk": "3"},

? ? }))


? ? fmt.Println(mapLowCaseKeys(map[int]float64{

? ? ? ? ?11 : 1.2,

? ? }))


? ? fmt.Println(mapLowCaseKeys(nil))

}


func mapLowCaseKeys(v interface{}) []string {

? ? keys := []string{}

? ? value := reflect.ValueOf(v)

? ? if value.Kind() == reflect.Map {

? ? ? ? for _, v := range value.MapKeys() {

? ? ? ? ? ? if v.Kind() == reflect.String {

? ? ? ? ? ? ? ? keys = append(keys, v.String())

? ? ? ? ? ? }

? ? ? ? }

? ? ? ? return keys

? ? } else {

? ? ? ? fmt.Println("it is not a map!!")

? ? ? ? return keys

? ? }

}


查看完整回答
反對 回復(fù) 2023-07-10
  • 1 回答
  • 0 關(guān)注
  • 136 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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