Каковы побочные эффекты использования структур для группировки констант - PullRequest
0 голосов
/ 14 июля 2020

Я знаю, что мы не можем использовать структуру как константу в Go. Но я хотел бы сгруппировать свою константу для более чистого кода, вместо того, чтобы иметь много констант с некоторым префиксом, поэтому я делаю это:

var SomeStatus = struct {
  Active   int
  Inactive int
  Others   int
}{
  Active: 1,
  Inactive: 2,
  Others: 3
}

// usage example
status = Status.Active

// example with some prefix
const StatusActive = 1
const StatusInactive = 2
const StatusOthers = 3
const OtherConstantVariable = 1
...

Если это не имеет значения, значение переменной можно переписать . Каков другой побочный эффект этого трюка?

1 Ответ

1 голос
/ 14 июля 2020

Каков другой побочный эффект этого трюка?

Те, которые я могу придумать. Могут быть и другие:

  • Это менее эффективно, так как переменные выделяют оперативную память.
  • Теперь будут вычисляться любые значения, которые могут быть предварительно вычислены во время компиляции из-за константы во время выполнения.
  • Для экспортированных символов он открывает вам возможность модификации во время выполнения любым, кто импортирует ваш пакет.
  • Это не идиоматия c, поэтому потенциально может запутать любого, кто увидит ваш код .
  • Теряется гибкость, которую обеспечивают нетипизированные константы.
...