kra*_*r65 5 python struct dictionary go
我刚刚开始使用Go,来自Python我试图在Python中找到相当于dict的东西.在Python中我会这样做:
d = {
'name': 'Kramer', # string
'age': 25 # int
}
Run Code Online (Sandbox Code Playgroud)
我第一次发现的map
类型,但只允许一个类型的值(它不能同时处理ints
和strings
.我真的需要创建一个struct
每当我想要做这样的事情?或者是有任何类型的我失踪?
欢迎所有提示!
kos*_*tix 10
基本上问题是很难遇到在实际代码中将不同类型的值存储在同一个映射实例中的要求.
在您的特定情况下,您应该只使用结构类型,如下所示:
type person struct {
name string
age int
}
Run Code Online (Sandbox Code Playgroud)
由于所谓的"文字",初始化它们并不比地图更难:
joe := person{
name: "Doe, John",
age: 32,
}
Run Code Online (Sandbox Code Playgroud)
访问单个字段并不比使用地图更难:
joe["name"] // a map
Run Code Online (Sandbox Code Playgroud)
与
joe.name // a struct type
Run Code Online (Sandbox Code Playgroud)
总而言之,请考虑阅读一本关于Go的介绍性书籍 以及解决Go问题的尝试,因为你不可避免地试图将你对动态类型语言的工作知识应用于严格类型的语言,所以你基本上试图在Go中编写Python,这会适得其反.
我建议从 The Go Programming Language开始.
这可能不是最好的决定,但您可以使用interface{}
让您的地图接受任何类型:
package main
import (
"fmt"
)
func main() {
dict := map[interface{}]interface{} {
1: "hello",
"hey": 2,
}
fmt.Println(dict) // map[1:hello hey:2]
}
Run Code Online (Sandbox Code Playgroud)