github.com/goravel/framework@v1.13.9/database/gorm/utils.go (about)

     1  package gorm
     2  
     3  import "reflect"
     4  
     5  func copyStruct(dest any) reflect.Value {
     6  	t := reflect.TypeOf(dest)
     7  	v := reflect.ValueOf(dest)
     8  	if t.Kind() == reflect.Pointer {
     9  		t = t.Elem()
    10  		v = v.Elem()
    11  	}
    12  
    13  	destFields := make([]reflect.StructField, 0)
    14  	for i := 0; i < t.NumField(); i++ {
    15  		destFields = append(destFields, t.Field(i))
    16  	}
    17  	copyDestStruct := reflect.StructOf(destFields)
    18  
    19  	return v.Convert(copyDestStruct)
    20  }