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