示例代码:
package main
import "fmt"
func main() {
example_container := []interface{}{
map[string]string{
"name": "bob",
"id": "1",
},
map[string]string{
"name": "jim",
"id": "2",
},
}
fmt.Printf("%v\n", example_container)
fmt.Printf("%v\n", example_container[0])
fmt.Printf("%v\n", example_container[0]["name"])
}
问题行:
fmt.Printf("%v\n", example_container[0]["name"])
错误:
invalid operation: example_container[0]["name"] (type interface {} does not support indexing)
题:
那么,如何访问该界面内的键?
我是否需要使用方法集定义更复杂的接口来完成此操作?
由于您的分片类型为[]interface{}
,因此索引该分片将为您提供type的元素interface{}
。类型的值interface{}
无法建立索引。
但是由于您将类型的值map[string]string
放入其中,因此可以使用类型断言来获取该映射类型的值,您可以对其进行正确索引:
fmt.Printf("%v\n", example_container[0].(map[string]string)["name"])
输出(在Go Playground上尝试):
[map[name:bob id:1] map[name:jim id:2]]
map[name:bob id:1]
bob
如果您知道总是将类型的值存储map[string]string
在example_container
切片中,则最好按以下方式对其进行定义:
example_container := []map[string]string{
map[string]string{
"name": "bob",
"id": "1",
},
map[string]string{
"name": "jim",
"id": "2",
},
}
然后,您不需要类型声明就可以访问名称:
fmt.Printf("%v\n", example_container[0]["name"])
在Go Playground上尝试一下。
还要注意,在用于初始化example_container
切片的复合文字中,列出元素时甚至可以省略地图类型:
example_container := []map[string]string{
{
"name": "bob",
"id": "1",
},
{
"name": "jim",
"id": "2",
},
}
问题内容: 假设以下 为什么无法访问现在存储在映射中的struct实例? 任何人都可以阐明如何访问映射存储的结构,或为何无法访问它的逻辑? 笔记 我知道您可以通过复制结构,更改副本并将其复制回到地图中来实现这一点-但这是一项昂贵的复制操作。 我也知道这可以通过在我的地图中存储结构指针来完成,但是我也不想这样做。 问题答案: 根本问题是您无法获取地图中某物的地址。您可能会认为编译会重新安排为 但这不
我使用Micronaut 3.2.3和Kubernetes集成,从配置映射和机密中注入配置值。 依赖: bootstrap.yml 如您所见,应用程序配置图包括kafka.brokers值: 我添加了一个简单的单例类,用于检查是否可以注入项目: 日志跟踪似乎表明这些配置映射已被正确访问: 但是,应用程序崩溃,因为它找不到它:
我们需要访问strut操作类中定义的实例映射(它有get/set方法)。我们需要动态填充地图。我们生成代码,在运行时使用基于一些用户输入的java脚本填充地图。我们使用freemarker作为模板。 ftl中的Java脚本代码如下所示: 这里的是
我已经用伪分布式模式安装了Hadoop 3.1.1。我尝试访问Hadoop Web界面,NameNode()和JobHistoryServer()UI打开良好,但DataNode()、ResourceManager()UI被阻止。 但是,当我使用命令时,DataNode和ResourceManager仍然在工作。此外,日志文件中没有任何特殊的错误消息。 我想知道是什么问题。 大师: 奴隶: hdf
问题内容: 在具有并发访问的程序中使用映射时,是否需要在函数中使用互斥体来 读取 值? 问题答案: 读者众多,没有作家可以: https://groups.google.com/d/msg/golang- nuts/HpLWnGTp-n8/hyUYmnWJqiQJ 一个作家,没有读者是可以的。(否则,地图不会太好。) 否则,如果至少有一个作家,而作家或读者至少还有一个,那么 所有 读者 和 作家都
我在使用reflections api的公共类中的私有类中使用私有方法时遇到问题。下面是一个简化的代码示例: 同样,我希望能够实例化一个类对象,然后从私有类调用。我一直试图通过反射来做到这一点,但我似乎无法超过1级。此外,内部类可能有也可能没有大多数代码似乎使用的构造函数。上面的代码只是框架。 我当前的代码: 我查找了各种方法来获取内部类或私有方法,但找不到在不使用构造函数的情况下将外部对象获取到