如何在golang中匹配两个接口

时间:2016-06-15 14:33:32

标签: go interface

如果我的类型为map[interface{}]interface{}并且我有另一个地图具有map [string] interface {},那么interface {}值如何进行比较。

如果我有哈希,如何评估哈希值? m := make(map[string]interface{})我执行m[m["key"]],即我传递了一个以字符串为键的地图的接口{}值。

反之亦然,即: m1 := make(map[interface{}]interface{})我执行m1[m["key"]]

1 个答案:

答案 0 :(得分:2)

Go接口是一个2字的值,并进行比较。来自Language Specification上的Comparison Operators部分:

  • 界面值具有可比性。如果两个接口值具有相同的动态类型和相同的动态值,或者两者的值都为nil,则它们相等。
  • 当X类型的值相当且X实现T时,非接口类型X的值x和接口类型T的值t是可比较的。如果t的动态类型与X相同并且t的动态值是等于x。

map[interface{}]T的情况下,只有第一点是相关的,因为密钥总是转换为interface{}进行比较。