Kiedy typ powinien być strukturą zawierającą inny typ i kiedy powinien po prostu „rozszerzyć” (?) Ten typ?
Obecnie uczę się Go, wykonującproblemy z rosalindem (w zasadzie kilka bioinformatycznych kodowych kodów).
Obecnie reprezentuję nić DNA typu:
type DNAStrand struct {
dna byte[]
}
Moim początkowym powodem było hermetyzowanie fragmentu bajtu, aby wiedzieć, że zawiera on tylko bajty reprezentujące nukleotydy:'A', 'C', 'G', 'T'
. Zrozumiałem, że nie było to oczywiście gwarantowane, ponieważ mogłem po prostu zrobić:
DNAStrand{[]byte("foo bar")}
I nie ma już żadnej gwarancji, że moja nici dna zawiera tablicę bajtów zawierającą tylko elementy z tych czterech bajtów.
Ponieważ moja struktura zawiera tylko tablicę bajtów, czy lepiej / lepiej jest robić to:
type DNAStrand []byte
A może lepiej pozwolić typowi zawierać nici DNA? Czy są jakieś zasady, kiedy używać któregokolwiek z dwóch podejść?