Skip to content

Add a Comparable helper #5

@mvdan

Description

@mvdan
Contributor

I was just thinking that most of the types one might want to diff can already be compared for equality, as per the language spec.

So, we could add func Comparable(a, b interface{}) DiffWriteable. It would ensure that both params are of the same type, that both are slice types, and that both element types are comparable.

For example, this would be useful with integers, arrays, custom struct types, et cetera.

I'd still keep Strings, because for the foreseeable future, avoiding interface parameters will make the code faster and easier.

Potentially, we could also use the Equal method as defined in https://github.com/google/go-cmp.

Activity

changed the title [-]Add a Comparable helper?[/-] [+]Add a Comparable helper[/+] on Jul 9, 2018
josharian

josharian commented on Aug 27, 2019

@josharian
Contributor

I have had a similar idea. Quoting from diff.go:

// TODO: consider adding an "it just works" test helper that accepts two slices (via interface{}),
// diffs them using Strings or Bytes or Slices (using reflect.DeepEqual) as appropriate,
// and calls t.Errorf with a generated diff if they're not equal.

My only hesitation is that it expand the API, and the API already feels kinda large. Let's leave this one on the back burner for a bit until someone has a concrete need for it (I don't yet), since it is easy to add and hard to remove.

mvdan

mvdan commented on Aug 28, 2019

@mvdan
ContributorAuthor

Sure!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @josharian@mvdan

        Issue actions

          Add a Comparable helper · Issue #5 · pkg/diff