gpt4 book ai didi

Go:直接附加到 map 中找到的 slice

转载 作者:IT王子 更新时间:2023-10-29 00:43:29 25 4
gpt4 key购买 nike

我想创建一个 slice 映射,其中将值附加到相应的 slice 。但是,当尝试直接附加到通过访问它返回的 slice 时(请参阅下面的评论),它不会被存储,所以我不得不使用长格式访问(评论下方的行)。

为什么会这样?我希望访问映射返回某种指针,所以在我看来 mappedAminoAcid == aminoAcidsToCodons[aminoAcid];显然,我错了。

谢谢!

aminoAcidsToCodons := map[rune][]string{}
for codon, aminoAcid := range utils.CodonsToAminoAcid {
mappedAminoAcid, ok := aminoAcidsToCodons[aminoAcid]

if ok {
// NOT WORKING: mappedAminoAcid = append(mappedAminoAcid, codon)
aminoAcidsToCodons[aminoAcid] = append(mappedAminoAcid, codon)
} else {
aminoAcidsToCodons[aminoAcid] = []string{codon}
}
}

最佳答案

如果底层数组必须增长以容纳新元素,

append 会返回一个新 slice 。所以是的,您必须将新 slice 放回 map 中。这与字符串的工作方式没有什么不同,例如:

var x map[string]string
x["a"] = "foo"

y := x["a"]
y = "bar"

// x["a"] is still "foo"

由于 nil slice 是附加的第一个参数非常好,您可以将代码简化为:

aminoAcidsToCodons := map[rune][]string{}
for codon, aminoAcid := range utils.CodonsToAminoAcid {
aminoAcidsToCodons[aminoAcid] = append(aminoAcidsToCodons[aminoAcid], codon)
}

关于Go:直接附加到 map 中找到的 slice ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46492318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com