高朗辞典

2024-04-24 15:52:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是从Go开始,从Python开始,我试图找到Python中的dict的等价物。在Python中,我会这样做:

d = {
    'name': 'Kramer',  # string
    'age': 25          # int
}

我首先找到了map类型,但它只允许一种类型的值(它不能同时处理intsstrings)。每当我想做这样的事情时,我真的需要创建一个struct吗?或者有什么类型的我不见了?

欢迎所有小费!


Tags: namego类型mapagestring事情struct
2条回答

这可能不是最好的决定,但是您可以使用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

相关问题 更多 >