2024-04-24 15:52:24 发布
网友
我只是从Go开始,从Python开始,我试图找到Python中的dict的等价物。在Python中,我会这样做:
d = { 'name': 'Kramer', # string 'age': 25 # int }
我首先找到了map类型,但它只允许一种类型的值(它不能同时处理ints和strings)。每当我想做这样的事情时,我真的需要创建一个struct吗?或者有什么类型的我不见了?
map
ints
strings
struct
欢迎所有小费!
这可能不是最好的决定,但是您可以使用interface{}使您的映射接受任何类型:
interface{}
package main import ( "fmt" ) func main() { dict := map[interface{}]interface{} { 1: "hello", "hey": 2, } fmt.Println(dict) // map[1:hello hey:2] }
基本上,问题是很难在实际代码中遇到将不同类型的值存储在同一映射实例中的要求。
在您的特定情况下,应该只使用结构类型,如下所示:
type person struct { name string age int }
由于所谓的“文本”,初始化它们并不比映射困难:
joe := person{ name: "Doe, John", age: 32, }
访问单个字段并不比使用映射困难:
joe["name"] // a map
对
joe.name // a struct type
总而言之,请考虑边走边读一本入门书 在你试图用围棋解决问题的同时, 因为你不可避免地要运用你的工作知识 从动态类型语言到严格类型语言, 所以你基本上是想在Go中编写Python,这是 适得其反。
我建议从 The Go Programming Language。
还有free books on Go。
这可能不是最好的决定,但是您可以使用
interface{}
使您的映射接受任何类型:基本上,问题是很难在实际代码中遇到将不同类型的值存储在同一映射实例中的要求。
在您的特定情况下,应该只使用结构类型,如下所示:
由于所谓的“文本”,初始化它们并不比映射困难:
访问单个字段并不比使用映射困难:
对
总而言之,请考虑边走边读一本入门书 在你试图用围棋解决问题的同时, 因为你不可避免地要运用你的工作知识 从动态类型语言到严格类型语言, 所以你基本上是想在Go中编写Python,这是 适得其反。
我建议从 The Go Programming Language。
还有free books on Go。
相关问题 更多 >
编程相关推荐