package types import "fmt" type IntOrString struct { intVal int strVal string isInt bool } func (is *IntOrString) Set(val any) error { switch v := val.(type) { case int: case int8: case int16: case int32: case int64: case uint: case uint8: case uint16: case uint32: is.isInt = true is.intVal = int(v) return nil case string: is.isInt = false is.strVal = v return nil case []byte: is.isInt = false is.strVal = string(v) return nil } //nolint:err113 // Temp skip return fmt.Errorf("invalid type: %T", val) } func (is IntOrString) IsZero() bool { if is.isInt { return is.intVal == 0 } return is.strVal == "" } func (is IntOrString) Value() any { if is.isInt { return is.intVal } return is.strVal }