In [1]:
"A"


Out[1]:
A

In [2]:
"ACGT"


Out[2]:
ACGT

In [3]:
st := "ACGT"

In [4]:
len(st)


Out[4]:
4

In [5]:
""


Out[5]:


In [6]:
len("")


Out[6]:
0

In [7]:
import "math/rand"
st = "ACGT"
string(st[rand.Intn(len(st))]) // generating a random nucleotide


Out[7]:
C

In [8]:
string(st[rand.Intn(len(st))]) // repeated invocations might yield different nucleotides


Out[8]:
T

In [9]:
string(st[rand.Intn(len(st))]) // repeated invocations might yield different nucleotides


Out[9]:
T

In [10]:
string(st[rand.Intn(len(st))]) // repeated invocations might yield different nucleotides


Out[10]:
T

In [11]:
string(st[rand.Intn(len(st))]) // repeated invocations might yield different nucleotides


Out[11]:
C

In [12]:
// make random nucleotide string by concatenating random nucleotides
import "bytes"
var b bytes.Buffer
for i := 0; i < 40; i++ {
    b.WriteByte(st[rand.Intn(len(st))])
}
st = b.String()
st


Out[12]:
GCAAAGTGCAGTCCGTGAGTTTAGTCATTCACTCGCGGTC

In [13]:
st[1:3] // substring, starting at position 1 and extending up to but not including position 3
// note that the first position is numbered 0


Out[13]:
CA

In [14]:
st[0:3] // prefix of length 3


Out[14]:
GCA

In [15]:
st[:3] // another way of getting the prefix of length 3


Out[15]:
GCA

In [16]:
st[len(st)-3:len(st)] // suffix of length 3


Out[16]:
GTC

In [17]:
st[-3:] // another way of getting the suffix of length 3


repl.go:1:5: negative slice index: -3 == Expr{Type: int, Value: -3}

In [18]:
st1, st2 := "CAT", "ATAC"

In [19]:
st1


Out[19]:
CAT

In [20]:
st2


Out[20]:
ATAC

In [21]:
st1 + st2 // concatenation of 2 strings


Out[21]:
CATATAC