100-go-mistakes/3-data-types/29-comparing-values/main.go
2021-12-27 15:56:17 +01:00

55 lines
1.1 KiB
Go

package main
import (
"fmt"
"reflect"
)
type customer1 struct {
id string
}
type customer2 struct {
id string
operations []float64
}
func main() {
cust11 := customer1{id: "x"}
cust12 := customer1{id: "x"}
fmt.Println(cust11 == cust12)
cust21 := customer2{id: "x", operations: []float64{1.}}
cust22 := customer2{id: "x", operations: []float64{1.}}
// Doesn't compile
// fmt.Println(cust21 == cust22)
_ = cust21
_ = cust22
var a any = 3
var b any = 3
fmt.Println(a == b)
var cust31 any = customer2{id: "x", operations: []float64{1.}}
var cust32 any = customer2{id: "x", operations: []float64{1.}}
fmt.Println(cust31 == cust32)
cust41 := customer2{id: "x", operations: []float64{1.}}
cust42 := customer2{id: "x", operations: []float64{1.}}
fmt.Println(reflect.DeepEqual(cust41, cust42))
}
func (a customer2) equal(b customer2) bool {
if a.id != b.id {
return false
}
if len(a.operations) != len(b.operations) {
return false
}
for i := 0; i < len(a.operations); i++ {
if a.operations[i] != b.operations[i] {
return false
}
}
return true
}