Предположим, у меня есть следующий фрагмент кода:
package fruits
type fruitType uint8
const(
banana fruitType = iota
apple fruitType = iota
strawberry fruitType = iota
)
type allFruitTypes struct {
Banana fruitType
Apple fruitType
Strawberry fruitType
}
var allFruitTypesImpl = allFruitTypes {
Banana: banana,
Apple: apple,
Strawberry: strawberry,
}
//GetAllFruitTypes returns a list with all the possible fruit types
func GetAllFruitTypes() *allFruitTypes {
return &allFruitTypesImpl
}
Таким образом, я могу избежать того, что вне моей упаковки создаются новые виды фруктов.И все же это позволяет прочитать мой список возможных типов фруктов.Это правильно?
Так что моя главная проблема здесь в том, что я нахожу действительно раздражающим определять 3 вещи, которые означают одно и то же:
- константы, использующие йоту
- объявление типа структуры
- , определяющее реализацию структуры и вводящее значения для каждого члена.
Для меня семантически три из них означают одно и то же.Однако из-за того, как работает go (или из-за отсутствия у меня знаний о том, как лучше набрать этот код на go), мне приходится повторять одно и то же 3 раза.
Есть ли способ вызвать тот же эффект безнабирать одну и ту же семантику 3 раза?