gpt4 book ai didi

go - 如何在 golang 中相互转换相同的签名类型?

转载 作者:IT王子 更新时间:2023-10-29 02:28:51 31 4
gpt4 key购买 nike

我要转换自;

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/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com