В настоящее время я изучаю Go, выполняя проблемы с росалиндом (в основном это куча каталогов каталогов, связанных с биоинформатикой).
В настоящее время я представляю цепочку ДНК с типом:
type DNAStrand struct {
dna byte[]
}
Моя первоначальная причина заключалась в том, чтобы инкапсулировать байтовый срез, чтобы я знал, что он содержит только байты, представляющие нуклеотиды: 'A', 'C', 'G', 'T'
. Я понял, что это явно не было гарантировано, поскольку я мог просто сделать:
DNAStrand{[]byte("foo bar")}
И больше нет никакой гарантии, что моя строка dna содержит байтовый массив с только элементами из этих четырех байтов.
Поскольку моя структура содержит только массив байтов, лучше/более идеоматично:
type DNAStrand []byte
Или лучше, чтобы тип содержал нить dna? Существуют ли какие-либо эмпирические правила для использования любого из двух подходов?