Golang中关于Map的常见问题解析
Golang中关于Map的常见问题解析 在一次实践练习中,我收到了以下指示:
创建一个映射,其键的类型为字符串,表示人物的"姓_名"格式,值的类型为[]字符串,用于存储他们喜欢的事物。在映射中存储三条记录。打印所有值及其在切片中的索引位置。
bond_james、Shaken, not stirred、Martinis、Women
moneypenny_miss、James Bond、Literature、Computer Science
no_dr、Being evil、Ice cream、Sunsets
以下是我的实现:
https://play.golang.org/p/wk3fziQomX5
我哪里做错了?
更多关于Golang中关于Map的常见问题解析的实战教程也可以访问 https://www.itying.com/category-94-b0.html
目前看起来不错。你只需要添加打印切片索引和值的部分。
这对我来说有点难以理解;可能是因为我今天没有做任何练习。我稍后再回来看这个。
使用反引号表示多行字符串。同时使用无类型复合字面量,这样更简洁。
这很有趣。虽然我还需要继续研究,但现在比第一次阅读时理解得更深入了。
在 fmt 和 Println 之间缺少点号(.)。
阅读错误信息可能有助于解决这类问题。
func main() {
fmt.Println("hello world")
}
此外:
Go语言已经在特定情况下允许省略复合字面量的类型。本提案将这一许可扩展到所有可以推导出字面量类型的场合。
观看了老师的视频后,我得到了以下代码:
package main
import (
"fmt"
)
func main() {
fmt.Println("hello world")
}
所以我觉得自己掌握得不错。我只需要再多花点时间研究这个内容。
NobbZ:
阅读错误信息可能有助于解决问题
我在理解某些错误信息方面有困难,但正在逐渐学会解读其他类型的错误。我不明白这个特定的错误信息是什么意思:语句末尾出现意外的 Println
你只需要添加打印切片索引和值的部分
对于多行字符串请使用反引号。同时建议使用无类型的复合字面量,这样更简洁(参见 https://github.com/golang/go/issues/12854) https://play.golang.org/p/9sgbLZaZjsl
在a := {1, 2, 3}这种情况下无法推导出类型,因为它可能是某种长度的int/uint类型。我想这就是为什么在切片字面量中不允许省略类型的原因。
// 代码示例保留原样
这可能是你想要做的。https://play.golang.org/p/UopgdBH15pJ 映射的值是 []string 类型。所以你需要要么当场创建一个列表,要么将其创建为单独的变量然后进行赋值。
func main() {
fmt.Println("hello world")
}
谢谢 🙂
这部分我不理解:
var x []string = {"a", "b", "c"}
var m map[string]int = {"a": 1}
type T struct {
V int
}
var s []*T = {{0}, {1}, {2}}
a := {1, 2, 3} // 错误:左侧没有指定类型
在您的代码中,主要问题出现在range循环的使用上。当您使用range遍历map时,第一个返回值是键,第二个返回值是值,而不是索引。您试图将键作为索引使用,这导致了类型不匹配的错误。
以下是修正后的代码:
package main
import "fmt"
func main() {
m := map[string][]string{
"bond_james": {"Shaken, not stirred", "Martinis", "Women"},
"moneypenny_miss": {"James Bond", "Literature", "Computer Science"},
"no_dr": {"Being evil", "Ice cream", "Sunsets"},
}
for key, values := range m {
fmt.Printf("Key: %s\n", key)
for i, value := range values {
fmt.Printf(" Index: %d, Value: %s\n", i, value)
}
fmt.Println()
}
}
输出结果:
Key: bond_james
Index: 0, Value: Shaken, not stirred
Index: 1, Value: Martinis
Index: 2, Value: Women
Key: moneypenny_miss
Index: 0, Value: James Bond
Index: 1, Value: Literature
Index: 2, Value: Computer Science
Key: no_dr
Index: 0, Value: Being evil
Index: 1, Value: Ice cream
Index: 2, Value: Sunsets
关键修正点:
- 外层循环:
for key, values := range m-key是字符串键,values是字符串切片 - 内层循环:
for i, value := range values-i是切片索引,value是切片中的具体值
这样就能正确打印出每个人的喜好及其在切片中的索引位置了。


