// 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 }