https://github.com/ake-persson/typecomp
Provides comparison for different Go types and a Comparer interface when using structs
https://github.com/ake-persson/typecomp
cmp go
Last synced: 9 months ago
JSON representation
Provides comparison for different Go types and a Comparer interface when using structs
- Host: GitHub
- URL: https://github.com/ake-persson/typecomp
- Owner: ake-persson
- License: apache-2.0
- Created: 2018-05-01T16:07:59.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2021-07-20T08:58:43.000Z (over 4 years ago)
- Last Synced: 2025-06-08T10:03:34.259Z (9 months ago)
- Topics: cmp, go
- Language: Go
- Homepage:
- Size: 2.27 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://godoc.org/github.com/ake-persson/typecomp)
[](https://codecov.io/gh/ake-persson/typecomp)
[](https://travis-ci.org/ake-persson/typecomp)
[](https://goreportcard.com/report/github.com/ake-persson/typecomp)
[](https://github.com/ake-persson/mlfmt/blob/master/LICENSE)
# cmp
Package provides comparison for different Go types and a Comparer interface when using structs.
```go
package main
import (
"fmt"
"log"
cmp "github.com/ake-persson/kvstore/cmp"
)
type Car struct {
Manufacturer string
Model string
}
type Cars []*Car
func (c Car) String() string {
return c.Manufacturer + " " + c.Model
}
func (c Car) Eq(b interface{}) (bool, error) {
return c.String() == b.(Car).String(), nil
}
func (c Car) Lt(b interface{}) (bool, error) {
return c.String() < b.(Car).String(), nil
}
func main() {
cars := Cars{
&Car{
Manufacturer: "Audi",
Model: "Q3",
},
&Car{
Manufacturer: "Audi",
Model: "Q5",
},
}
ok, err := cmp.Eq(cars[0], cars[0])
if err != nil {
log.Fatal(err)
}
fmt.Printf("ok: %v\n", ok)
ok, err = cmp.Eq(cars[0], cars[1])
if err != nil {
log.Fatal(err)
}
fmt.Printf("ok: %v\n", ok)
}
```