结构体比较
题目:
下面代码是否可以编译通过?为什么?
1 |
|
答案解析
编译不通过。
关于 Go 语言中的 struct 比较问题,这个需要分情况来讨论:
对于不同类型的 struct 无法进行比较
同一个 struct 的两个实例可比较也不可比较,
如果该 strcut 的所有字段都是可比较类型,则可以比较
如果包含不可比较字段,如 slice、map、func 时,不可比较,但可以通过如下方式进行比较
1
2
3
4
5
6
7可以使用reflect.DeepEqual进行比较
if reflect.DeepEqual(sm1, sm2) {
fmt.Println("sm1 == sm2")
} else {
fmt.Println("sm1 != sm2")
}
结构体比较
http://example.com/2023/09/04/Go每日一题/结构体比较细节/