mirror of
https://github.com/teivah/100-go-mistakes.git
synced 2026-06-20 16:45:56 +08:00
55 lines
1.1 KiB
Go
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
|
|
}
|