The alphabet.Slice interface is really an internal type used by the
sequence containers to be able to perform manipulations of the sequence
data. Unless you are writing a new sequence container or a new sequence
data type, you should not need to interact with it.
To address your question of what to do, you have given the fasta.Reader
a template type, so you know what the seq.Sequence concrete type is
that is returned by a Read call. Type assert to that concrete type and
then you can iteration over the sequence. Say you are using a
*linear.Seq
f := fasta.NewReader(r, linear.NewSeq("", nil, alphabet.DNA))
sc := seqio.NewScanner(f)
for sc.Next() {
s := sc.Seq().(*linear.Seq)
for _, l := range s.Seq {
// interesting things