为了账号安全,请及时绑定邮箱和手机立即绑定

使用 []string 字段时出现不可比的类型错误(Go lang)

使用 []string 字段时出现不可比的类型错误(Go lang)

Go
皈依舞 2021-06-02 13:42:49
我有一个特定的 Go lang 结构对象,我正在与之交互,我希望它等于自身。我将函数传递给一个函数,该函数只是返回它,但它通过接受接口输入/输出来实现{}type Animal struct {    name string    food interface{}}type YummyFood {    calories int}func echo_back(input interface{}) interface{} {    return input}func main() {    var tiger_food = Food{calories: 1000}    var tiger = Animal{name: "Larry", food: tiger_food}    output_tiger := echo_back(tiger)    fmt.Printf("%T, %+v\n", tiger, tiger)    fmt.Printf("%T, %+v\n", output_tiger, output_tiger)    fmt.Println(tiger == output_tiger)    fmt.Println(tiger == output_tiger.(Animal))}运行此程序,您会看到tiger 和output_tiger 看起来相同并且评估为相等。伟大的。这就是我所期望的。现在,尝试将这个定义用于 YummyFoodtype YummyFood {    calories int    ingredients []string}突然之间,即使使用类型断言,echo_back 的输出也不会评估为与输入相同。我收到“恐慌:运行时错误:比较不可比的类型 YummyFood”问题是为什么加了[]string类型会导致输入输出不可比?如何修改 output_tiger 以取回我放入的相同内容(即我希望它与“老虎”相同)。我如何反映 output_tiger 使其等于老虎?
查看完整描述

2 回答

?
ITMISS

TA贡献1871条经验 获得超8个赞

它不会很快,但您可以使用reflect.DeepEqual()来比较切片(或只是YummyFood)。它完成循环遍历它以比较所有元素的工作。您可能可以创建一个更有效的函数来执行此操作,但是如果那里的函数足够快,您将为自己节省一些工作,也许还可以节省一些错误。:-)


查看完整回答
反对 回复 2021-06-07
  • 2 回答
  • 0 关注
  • 216 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信