在Go中,有没有更简单/更好的方法从地图中获取一部分密钥?
目前,我正在遍历地图并将关键点复制到一个切片:
i := 0
keys := make([]int, len(mymap))
for k := range mymap {
keys[i] = k
i++
}
您也可以通过包“reflect”中struct Value
的方法< code>MapKeys获取类型为< code>[]Value的键数组:
package main
import (
"fmt"
"reflect"
)
func main() {
abc := map[string]int{
"a": 1,
"b": 2,
"c": 3,
}
keys := reflect.ValueOf(abc).MapKeys()
fmt.Println(keys) // [a b c]
}
举个例子,
package main
func main() {
mymap := make(map[int]string)
keys := make([]int, 0, len(mymap))
for k := range mymap {
keys = append(keys, k)
}
}
为了提高Go的效率,最小化内存分配很重要。
这是一个老问题,但这是我的两分钱。PeterSO的回答略为简洁,但效率略低。你已经知道它会有多大,所以你甚至不需要使用append:
keys := make([]int, len(mymap))
i := 0
for k := range mymap {
keys[i] = k
i++
}
在大多数情况下,这可能不会有太大的区别,但这并不会增加太多工作,在我的测试中(使用一个包含1,000,000个随机< code>int64键的映射,然后用每种方法生成十次键数组),直接分配数组成员比使用append快20%左右。
尽管设置容量消除了重新分配,但追加仍然需要做额外的工作来检查您是否已达到每个追加的容量。
问题内容: 我尝试从KeyStore获取密钥。我通过Keytool创建了一个密钥库: keytool -genkeypair -dname“ cn = Mark Jones,ou = JavaSoft,o = Sun,c = US” -alias business2 -keypass abcdtest -keystore C:\ workspace \ XMLSample \ keystore \
问题内容: 我在Java中有一个Hashmap,如下所示: 然后我像这样填充它: 如何获得钥匙?类似于:返回“ United”。 问题答案: 一个包含多个键。您可以用来获取所有键的集合。 将存储与key 和key 。要遍历所有键: 将打印和。
问题内容: 在Go中,有没有更简单/更巧妙的方法从地图中获取键的片段? 目前,我正在遍历地图并将键复制到一个切片: 问题答案: 例如, 为了在Go中高效运行,最小化内存分配非常重要。
我创建了一个CloudFormation模板,它成功地创建了一个IAM用户和一个AccessKey,并将该AccessKey分配给IAM用户。现在,我通过在CloudFormation模板的部分中输出AccessKey来获得AccessKey的秘密。
在,调用合并函数。 问题:如何获取导致复制的密钥? 在合并函数中,我想根据键来决定是否取消映射,或者继续并接受这些值。
我有一个基本的SpringBoot应用程序。使用Spring初始值设定项、嵌入式Tomcat、Thymeleaf模板引擎和作为可执行JAR文件的包。 在我的财产档案中: 在我的控制器中: 在模板中: 但这是我在模板中看到的,而不是电子邮件(已拍摄)