[go-experimental] Add convenience wrapper function for oneOf members (#6316)

This commit is contained in:
Slavek Kabrda 2020-05-18 09:57:05 +02:00 committed by GitHub
parent 43f7134b15
commit d1e8d632ef
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 41 additions and 0 deletions

View File

@ -5,6 +5,14 @@ type {{classname}} struct {
{{/oneOf}}
}
{{#oneOf}}
// {{{.}}}As{{classname}} is a convenience function that returns {{{.}}} wrapped in {{classname}}
func {{{.}}}As{{classname}}(v *{{{.}}}) {{classname}} {
return {{classname}}{ {{{.}}}: v}
}
{{/oneOf}}
// Unmarshl JSON data into one of the pointers in the struct
func (dst *{{classname}}) UnmarshalJSON(data []byte) error {
var err error

View File

@ -20,6 +20,17 @@ type Fruit struct {
Banana *Banana
}
// AppleAsFruit is a convenience function that returns Apple wrapped in Fruit
func AppleAsFruit(v *Apple) Fruit {
return Fruit{ Apple: v}
}
// BananaAsFruit is a convenience function that returns Banana wrapped in Fruit
func BananaAsFruit(v *Banana) Fruit {
return Fruit{ Banana: v}
}
// Unmarshl JSON data into one of the pointers in the struct
func (dst *Fruit) UnmarshalJSON(data []byte) error {
var err error

View File

@ -20,6 +20,17 @@ type FruitReq struct {
BananaReq *BananaReq
}
// AppleReqAsFruitReq is a convenience function that returns AppleReq wrapped in FruitReq
func AppleReqAsFruitReq(v *AppleReq) FruitReq {
return FruitReq{ AppleReq: v}
}
// BananaReqAsFruitReq is a convenience function that returns BananaReq wrapped in FruitReq
func BananaReqAsFruitReq(v *BananaReq) FruitReq {
return FruitReq{ BananaReq: v}
}
// Unmarshl JSON data into one of the pointers in the struct
func (dst *FruitReq) UnmarshalJSON(data []byte) error {
var err error

View File

@ -20,6 +20,17 @@ type Mammal struct {
Zebra *Zebra
}
// WhaleAsMammal is a convenience function that returns Whale wrapped in Mammal
func WhaleAsMammal(v *Whale) Mammal {
return Mammal{ Whale: v}
}
// ZebraAsMammal is a convenience function that returns Zebra wrapped in Mammal
func ZebraAsMammal(v *Zebra) Mammal {
return Mammal{ Zebra: v}
}
// Unmarshl JSON data into one of the pointers in the struct
func (dst *Mammal) UnmarshalJSON(data []byte) error {
var err error