Partial port of Python difflib package to Go
Switch branches/tags
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
difflib tests: test header is omitted if file names are empty Jan 10, 2016
.travis.yml .travis.yml: update stable go version to 1.5 Oct 27, 2015
LICENSE Initial port with SequenceMatcher and unified_diff() Oct 21, 2013 README: add link to Oct 28, 2015


Build Status GoDoc

Go-difflib is a partial port of python 3 difflib package. Its main goal was to make unified and context diff available in pure Go, mostly for testing purposes.

The following class and functions (and related tests) have be ported:

  • SequenceMatcher
  • unified_diff()
  • context_diff()


$ go get

Quick Start

Diffs are configured with Unified (or ContextDiff) structures, and can be output to an io.Writer or returned as a string.

diff := UnifiedDiff{
    A:        difflib.SplitLines("foo\nbar\n"),
    B:        difflib.SplitLines("foo\nbaz\n"),
    FromFile: "Original",
    ToFile:   "Current",
    Context:  3,
text, _ := GetUnifiedDiffString(diff)

would output:

--- Original
+++ Current
@@ -1,3 +1,3 @@