当前位置:  开发笔记 > 编程语言 > 正文

如何在go lang中将键作为字符串数组从map中获取?

如何解决《如何在golang中将键作为字符串数组从map中获取?》经验,为你挑选了2个好方法。

我需要使用strings.Join(invoicesBatch,",")来加入一个字符串数组.但是我使用reflect.ValueOf(invoiceList)从地图获得的数组.MapKeys()是reflect.Value数组.有没有一种简单的方法将它们转换为字符串数组.

地图已使用字符串键初始化.



1> zola..:

而不是使用反射,您可以使用for循环和范围来获得这样的一片键

package main

import (
"fmt"
"strings"
)

func main() {
  data := map[string]int{
      "A": 1,
      "B": 2,
  }
  keys := make([]string, 0, len(data))
  for key := range data {
    keys = append(keys, key)
  }

  fmt.Print(strings.Join(keys, ","))
}


`keys:= make([] string,0,len(data))`,否则你会在结果字符串的开头有逗号.

2> Ankur..:

您将需要使用循环,但每次我们已经知道长度时您不需要创建新切片.例:

func main() {
    a := map[string]int{
        "A": 1, "B": 2,
    }
    keys := reflect.ValueOf(a).MapKeys()
    strkeys := make([]string, len(keys))
    for i := 0; i < len(keys); i++ {
        strkeys[i] = keys[i].String()
    }
    fmt.Print(strings.Join(strkeys, ","))
}


似乎这种方法比@zola的建议更好。虽然作为Python开发人员,但令我们感到惊讶的是,我们需要使用反射来获取字典键:)
我希望除此之外别无他法
推荐阅读
夏晶阳--艺术
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有