// package owner -- описатель владельца package owner import ( "fmt" "gitp78su.ipnodns.ru/svi/kern/v4/d0/defs/def_spec_base" "gitp78su.ipnodns.ru/svi/kern/v4/d0/helpers" ) // OwnerId -- ID владельца. type OwnerId def_spec_base.Num // LOwner -- неизменяемый владелец. type LOwner struct { id OwnerId // Хранимое значение ID владельца name def_spec_base.Txt // Имя владельца } // LetOwner -- получить нового неизменяемого владельца. func LetOwner[T def_spec_base.NumConstraint, U def_spec_base.TxtConstraint](id T, name U) *LOwner { helpers.If(id == 0).Hassert("LetOwner(): id==0") helpers.If(name == "").Hassert("LetOwner(): id=%v, name is empty", id) sf := &LOwner{ id: OwnerId(id), name: def_spec_base.Txt(name), } return sf } // Id -- получить значение ID владельца. func (sf *LOwner) Id() OwnerId { return sf.id } // Name -- получить имя владельца. func (sf *LOwner) Name() def_spec_base.Txt { return sf.name } const ( strOut = `LOwner( id(%v) name(%v) )` ) // String -- получить строковое представление ID владельца. func (sf *LOwner) String() string { return fmt.Sprintf(strOut, sf.id, sf.name) } // Pass -- возвращает паспорт владельца func (sf *LOwner) Pass() *OwnerPass { pass := &OwnerPass{ ownerDest: sf, ownerCur: sf, } return pass }