github.com/unionj-cloud/go-doudou/v2@v2.3.5/toolkit/openapi/v3/testdata/enum.go (about)

     1  package main
     2  
     3  import "encoding/json"
     4  
     5  //go:generate go-doudou name --file $GOFILE -o
     6  
     7  type KeyboardLayout int
     8  
     9  const (
    10  	UNKNOWN KeyboardLayout = iota
    11  	QWERTZ                 = 300
    12  
    13  	AZERTY int64 = 400
    14  	QWERTY
    15  	ddd = "abc"
    16  )
    17  
    18  func (k *KeyboardLayout) StringSetter(value string) {
    19  	switch value {
    20  	case "UNKNOWN":
    21  		*k = UNKNOWN
    22  	case "QWERTY":
    23  		*k = QWERTY
    24  	case "QWERTZ":
    25  		*k = QWERTZ
    26  	case "AZERTY":
    27  		*k = AZERTY
    28  	default:
    29  		*k = UNKNOWN
    30  	}
    31  }
    32  
    33  func (k *KeyboardLayout) StringGetter() string {
    34  	switch *k {
    35  	case UNKNOWN:
    36  		return "UNKNOWN"
    37  	case QWERTY:
    38  		return "QWERTY"
    39  	case QWERTZ:
    40  		return "QWERTZ"
    41  	case AZERTY:
    42  		return "AZERTY"
    43  	default:
    44  		return "UNKNOWN"
    45  	}
    46  }
    47  
    48  func (k *KeyboardLayout) UnmarshalJSON(bytes []byte) error {
    49  	var _k string
    50  	err := json.Unmarshal(bytes, &_k)
    51  	if err != nil {
    52  		return err
    53  	}
    54  	k.StringSetter(_k)
    55  	return nil
    56  }
    57  
    58  func (k KeyboardLayout) MarshalJSON() ([]byte, error) {
    59  	return json.Marshal(k.StringGetter())
    60  }
    61  
    62  type Keyboard struct {
    63  	Layout  *KeyboardLayout `json:"layout,omitempty"`
    64  	Backlit bool            `json:"backlit,omitempty"`
    65  }