我想转换自
type MyType map[string]interface{}
到
logrus.Fields // map[string]interface{}
我的代码是;
func newAction(data interface{}) { // data comes as 'MyType'
df := data.(logrus.Fields)
}
我接受了这个错误;
interface conversion: interface {} is MyType, not logrus.Fields
答案 0 :(得分:4)
该问题使用Number.toString()
。类型断言断言接口值是特定类型。它不会转换类型。
使用type assertion在不同类型之间进行转换:
var v1 MyType
var v2 logrus.Fields
v2 = logrus.Fields(v1)
v1 = MyType(v2)
如果您有一个可以接受任何一种类型的函数,请使用conversion然后转换每种特定类型:
func newAction(data interface{}) {
var df logrus.Fields
switch v := data.(type) {
case logur.Fields:
df = v
case MyType:
df = logrus.Fields(v)
default:
// handle error
}
... do something with df
}