// package quark_val -- кварк значения package quark_val // Fix -- фиксированное значение type Fix struct{} // Mut -- изменяемое значение type Mut struct{} // CMod -- ограничитель модификации type CMod interface { Fix | Mut } // Field -- кварк поля type Field[M CMod, T any] struct { val T // Значение поля } // NewField -- возвращает новое фиксированное значение func NewField[T any](val T) *Field[Fix, T] { sf := &Field[Fix, T]{ val: val, } return sf } // NewFieldMut -- возвращает новое мутабельное значение func NewFieldMut[T any](val T) *Field[Mut, T] { sf := &Field[Mut, T]{ val: val, } return sf } // Получить значение поля func (sf *Field[M, T]) Get() T { return sf.val } // Set -- установить мутабельное значение func Set[T any](sf *Field[Mut, T], val T) { sf.val = val }