copier
copier copied to clipboard
In case of recursive struct, zero length slice become nil
Reproducible Example
package main
import (
"fmt"
"github.com/jinzhu/copier"
)
type SrcStruct1 struct {
Field1 string
Field2 []*SrcStruct1
Field3 []SrcStruct1
Field4 []*SrcStruct2
Field5 []SrcStruct2
}
type SrcStruct2 struct {
Field string
}
type DestStruct1 struct {
Field1 string
Field2 []*DestStruct1
Field3 []DestStruct1
Field4 []*DestStruct2
Field5 []DestStruct2
}
type DestStruct2 struct {
Field string
}
func main() {
src := SrcStruct1{
Field1: "Field1",
Field2: []*SrcStruct1{},
Field3: []SrcStruct1{},
Field4: []*SrcStruct2{},
Field5: []SrcStruct2{},
}
var dest DestStruct1
copier.Copy(&dest, &src)
fmt.Printf("%#v\n", dest)
}
Description
- go version go1.17.1
- github.com/jinzhu/copier v0.3.5
Output
main.DestStruct1{Field1:"Field1", Field2:[]*main.DestStruct1(nil), Field3:[]main.DestStruct1(nil), Field4:[]*main.DestStruct2{}, Field5:[]main.DestStruct2{}}