Шаг 100.
Язык программирования Go.
Пример. Пользовательский тип с единственным значением (продолжение)

    На этом шаге мы продолжим рассматривать пример реализации пользовательского типа с единственным значением.

    Метод String() реализует интерфейс fmt.Stringer, т.е. значения типа NLogic будут выводиться, как указано в функции, и могут передаваться везде, где ожидается значение, реализующее интерфейс fmt.Stringer.

func (log *NLogic) String() string {
   return fmt.Sprintf("%.0f%%", 100*log.val)
}

    Значения типа NLogic будут выводиться в виде целого числа процентов.

    Метод Set() обеспечивает изменяемость значений типа NLogic.

func (log *NLogic) Set(val interface{}) (err error) {
   log.val, err = float32ForValue(val)
   return err
}

    В функции выполняются операции с существующим значением *NLogic. Если полученное значение val является недопустимым, вызывающей программе возвращается непустое значение типа error и предполагается, что она проверит его.

    Для типов, значения которых передаются по указателю, бывает удобно реализовать метод Copy().

func (log *NLogic) Copy() *NLogic {
	return &NLogic{log.val}
} 

    Данный метод создает новое значение типа NLogic, копию приемника и возвращает указатель на него. Здесь нет необходимости проверять допустимость исходного значения, так как приемник всегда будет иметь допустимое значение. При этом предполагается, что при создании оригинального значения вызовом функции New() и его последующих изменениях с помощью метода Set() было получено пустое значение типа error.

    На следующем шаге рассмотрим реализацию логических функций в данном примере.


Предыдущий шаг Содержание Следующий шаг