Bri*_*ian 19 types equality interface go
我正在搜索[]interface{}给定interface{}值的切片:
var v interface{}
for i := 0; i < len(A); i++ {
if (A[i] == v) {
fmt.Println("Gotcha!")
break
}
}
Run Code Online (Sandbox Code Playgroud)
在琐碎的情况下,类型是int.但是,如果,例如,类型是一些自定义,我该怎么办struct?
我对 Go 类型的属性进行了总结
解释
depends- 仅当包含的类型可比较时才允许。)对于接口类型,代码将编译,但如果在运行时包含的类型不可比较,则运行时将出现恐慌。感谢@Andrew W. Phillips。我正在纠正我之前的答案,因为我现在认为它是错误的。当比较两个接口值时,只有当它们具有相同类型并且不可比较时,运行时才会出现恐慌。如果它们包含不同的类型,则即使一种或两种类型不可比较,结果也为 false。
什么是不可比较类型?基本上,它们是切片、映射、函数以及使用它们的任何结构或数组类型。
| 归档时间: |
|
| 查看次数: |
14377 次 |
| 最近记录: |