Когда тип должен быть структурой, содержащей другой тип, и когда он должен просто «расширять» (?) Этот тип?

м в настоящее время учусь идти, делаяпроблемы розалинд (в основном куча связанных с биоинформатикой кодовых катов) .I '

m в настоящее время представляет цепь ДНК с типом:

type DNAStrand struct {
    dna byte[]
}

Моя первоначальная причина заключалась в том, чтобы инкапсулировать срез байтов, чтобы я знал, что он содержит только байты, представляющие нуклеотиды:'A', 'C', 'G', 'T', Я понял, что это явно не гарантировано, так как я мог просто сделать:

DNAStrand{[]byte("foo bar")}

И больше нет никакой гарантии, что моя цепочка ДНК содержит байтовый массив только с элементами из этих четырех байтов.

Поскольку моя структура содержит только байтовый массив, лучше / более идеологически это сделать:

type DNAStrand []byte

Или лучше, чтобы тип содержал цепь ДНК? Существуют ли практические правила, когда следует использовать любой из двух подходов?

Ответы на вопрос(3)

Ваш ответ на вопрос