问题描述
感谢@CodingPickle评论,我提供了Go编程语言规范中的以下内容
等号运算符==和!=适用于可比较的操作数。
关于interface{}
s和structs
:
- 接口值是可比较的。如果两个接口值具有相同的动态类型和相等的动态值,或者两个接口值都为nil,则它们相等。
- 当类型X的值可比较并且X实现T时,非接口类型X的值x和接口类型T的值t可比较。如果t的动态类型等于X并且t的动态值等于x,则它们相等。 。
- 如果结构的所有字段都是可比较的,则它们的值是可比较的。如果两个结构值对应的非空白字段相等,则它们相等。
您也可以尝试这个游乐场https://play.golang.org/p/bgO1_V87v9k
换句话说,在Go中处理平等似乎很容易!
解决方法
我正在搜索[]interface{}
一个给定interface{}
值的切片:
var v interface{}
for i := 0; i < len(A); i++ {
if (A[i] == v) {
fmt.Println("Gotcha!")
break
}
}
在普通情况下,类型为int
。但是,例如,如果类型是一些自定义的,该struct
怎么办?