func (m *SequenceMatcher) SetSeq1(a []string) {
	if &a == &m.a {
		return
	}
	m.a = a
	m.matchingBlocks = nil
	m.opCodes = nil
}
Set the first sequence to be compared. The second sequence to be compared is
not changed.

SequenceMatcher computes and caches detailed information about the second
sequence, so if you want to compare one sequence S against many sequences,
use .SetSeq2(s) once and call .SetSeq1(x) repeatedly for each of the other
sequences.

See also SetSeqs() and SetSeq2().
package difflib
import (
	"bufio"
	"bytes"
	"fmt"
	"io"
	"strings"
)
func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}
func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}
func calculateRatio(matches, length int) float64 {
	if length > 0 {
		return 2.0 * float64(matches) / float64(length)
	}
	return 1.0
}
type Match struct {
	A    int
	B    int
	Size int
}
type OpCode struct {
	Tag byte
	I1  int
	I2  int
	J1  int
	J2  int
}
type SequenceMatcher struct {
	a              []string
	b              []string
	b2j            map[string][]int
	IsJunk         func(string) bool
	autoJunk       bool
	bJunk          map[string]struct{}
	matchingBlocks []Match
	fullBCount     map[string]int
	bPopular       map[string]struct{}
	opCodes        []OpCode
}
func NewMatcher(a, b []string) *SequenceMatcher {
	m := SequenceMatcher{autoJunk: true}
	m.SetSeqs(a, b)
	return &m
}
func NewMatcherWithJunk(a, b []string, autoJunk bool,
	isJunk func(string) bool) *SequenceMatcher {
	m := SequenceMatcher{IsJunk: isJunk, autoJunk: autoJunk}
	m.SetSeqs(a, b)
	return &m
}
func (m *SequenceMatcher) SetSeqs(a, b []string) {
	m.SetSeq1(a)
	m.SetSeq2(b)
}