我有一个特定的 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 看起来相同并且评估为相等。伟大的。这就是我所期望的。现在,尝试将这个定义用于 YummyFood
type YummyFood {
calories int
ingredients []string
}
突然之间,即使使用类型断言,echo_back 的输出也不会评估为与输入相同。我收到“恐慌:运行时错误:比较不可比的类型 YummyFood”
问题是为什么加了[]string类型会导致输入输出不可比?如何修改 output_tiger 以取回我放入的相同内容(即我希望它与“老虎”相同)。我如何反映 output_tiger 使其等于老虎?
ITMISS
相关分类