使用[]字符串字段时出现不可压缩类型错误(Go lang)
我有一个特定的Go-lang结构对象,我正在与之交互,我希望它与自身相等。我将函数传递给一个函数,该函数只返回它,但它通过接受接口{}输入/输出来实现使用[]字符串字段时出现不可压缩类型错误(Go lang),go,Go,我有一个特定的Go-lang结构对象,我正在与之交互,我希望它与自身相等。我将函数传递给一个函数,该函数只返回它,但它通过接受接口{}输入/输出来实现 type Animal struct { name string food interface{} } type YummyFood { calories int } func echo_back(input interface{}) interface{} { return input } func mai
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看起来是相同的,并且计算结果是相等的。伟大的这就是我所期望的。现在,试着用这个定义来定义美味食品
type YummyFood {
calories int
ingredients []string
}
突然之间,echo_back的输出计算结果与输入不一样,即使使用类型断言也是如此。我得到“恐慌:运行时错误:比较不可压缩类型YummyFood”
问题是为什么添加[]字符串类型会导致输入和输出不可压缩?我如何修改输出_tiger以返回我输入的相同内容(即我希望它与“tiger”相同)。如何反映tiger的输出,使其与tiger相等 切片([]字符串
)未定义相等项。包含定义了相等的成员的数组和结构将定义相等
请注意,对于切片,等式仍然没有定义,对于切片,计算通常是不可行的。还请注意,结构和数组的有序比较运算符(<>=)仍然没有定义
从它不会很快,但是你可以用它来比较切片(或者仅仅是美味食品)。它通过循环来比较所有元素。您可能会制作一个更高效的函数来执行此操作,但如果其中的一个函数足够快,您将节省一些工作和可能的一些错误。:-) 是什么使Go切片不同于其他语言中有相等运算符的无数其他动态数组?C++ STL容器具有相等的运算符、java、js,列表继续进行。我只是好奇,为什么围棋设计师选择不解决一个似乎完全可以解决的问题。