copier icon indicating copy to clipboard operation
copier copied to clipboard

In case of recursive struct, zero length slice become nil

Open s-takehana opened this issue 3 years ago • 0 comments

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{}}

s-takehana avatar Feb 22 '22 05:02 s-takehana