英文:
Compare two structs like array in golang
问题
我正在尝试在Golang中比较两个数组类型的结构体,以判断从网页抓取得到的struct1是否与从数据库获取的struct2相等。这是我想到的一种方法,可以知道外部网页和我的数据库之间是否发生了变化。
结构体定义如下:
type Exchange struct {
Name string `gorm:"Column:name" json:"name"`
Buy float64 `gorm:"Column:buy" json:"buy"`
Sell float64 `gorm:"Column:sell" json:"sell"`
}
从抓取的结果如下:
&[{Dólar 38.5 41} {Euro 38.82 43.57} {P. Argentino 0.05 0.35} {Real 6.95 8.95}]
从网页获取的结果如下:
&[{Dólar 38.5 41} {Euro 38.82 43.57} {P. Argentino 0.05 0.35} {Real 6.95 8.95}]
我的代码如下:
fmt.Println(exchanges)
dbExchanges := getExchangesFromDB()
fmt.Println(dbExchanges)
if exchanges == dbExchanges {
fmt.Println("is equal")
} else {
fmt.Println("no is equal")
}
fmt.Println("Struct equal: ", reflect.DeepEqual(exchanges, dbExchanges))
结果:
no is equal
Struct equal: false
英文:
I am trying to compare 2 structs of the array type in Golang in order to know if having struct1 obtained from web scrapping is equal to struct 2, which is data fetched from the database.
It is the way that I have thought to be able to know if there has been a change between the external web and my database.
The structs is:
type Exchange struct {
Name string `gorm:"Column:name" json:"name"`
Buy float64 `gorm:"Column:buy" json:"buy"`
Sell float64 `gorm:"Column:sell" json:"sell"`
}
The result after consult is from scrapping:
&[{Dólar 38.5 41 } {Euro 38.82 43.57 } {P. Argentino 0.05 0.35 } {Real 6.95 8.95 }]
From web
&[{Dólar 38.5 41} {Euro 38.82 43.57} {P. Argentino 0.05 0.35} {Real 6.95 8.95}]
My Code:
fmt.Println(exchanges)
dbExchanges := getExchangesFromDB()
fmt.Println(dbExchanges)
if exchanges == dbExchanges {
fmt.Println("is equal")
} else {
fmt.Println("no is equal")
}
fmt.Println("Struct equal: ", reflect.DeepEqual(exchanges, dbExchanges))
Result:
no is equal
Struct equal: false
答案1
得分: 1
在第一个if语句中,你正在比较两个变量的内存地址,而不是它们的值。在第二个if语句中(使用reflect.DeepEqual),你正在比较它们的值。
英文:
In the first if you are comparing the memory address of the two variables instead of theirs values. In the second if clause (using reflect.DeepEqual) you are comparing their values.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论