我要转换自;
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
最佳答案
问题使用 type assertion .类型断言断言接口(interface)值是特定类型。它不转换类型。
使用 conversion在类型之间进行转换:
var v1 MyType
var v2 logrus.Fields
v2 = logrus.Fields(v1)
v1 = MyType(v2)
如果您有一个可以接受任何一种类型的函数,请使用 type switch然后转换每个特定类型:
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
}
关于go - 如何在 golang 中相互转换相同的签名类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49653870/