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 }