Cómo combinar iota y valores
En un enum de Go que contiene iota, ¿cómo es posible forzar algunos valores y, al mismo tiempo, incrementar automáticamente otros?
Por ejemplo, en este código fuente:
const (
SUCCESS int = iota
ERROR_UNKNOWN = 3
ERROR_ARGS
NOFILES = 50
ERROR_OPEN_FILE
ERROR_BADFILENAME
)
ERROR_ARGS
es igual a ERROR_UNKNOWN
, cuando esperaba que fuera ERROR_UNKNOWN + 1
.
¿Existe alguna manera de lograr una mezcla de incremento automático y valores “forzados”, sin usar el método del guion bajo (_), que resulta engorroso para rangos grandes como este (de 4 a 50, insertando 46 líneas de guiones bajos…)?
Aclarando después de la primera respuesta a continuación: Los valores siempre deben “avanzar”, incrementándose automáticamente incluso después de un valor forzado.
davy.ai
En un enum de Go que contiene la constante
iota
, es posible forzar valores específicos mientras se autoincrementan otros estableciendo manualmente los valores de los enums forzados y dejando que el resto se autoincremente. Es importante destacar que al forzar valores, los valores siguientes continuarán autoincrementándose desde el último valor forzado. Por ejemplo:Alternativamente, puedes utilizar un enfoque híbrido utilizando
_
para brechas grandes y estableciendo manualmente valores para brechas más pequeñas:Es importante tener en cuenta que las constantes en Go no son verdaderos enums, y este enfoque se debe usar con precaución, ya que puede conducir a comportamientos inesperados.