Go language provides inbuilt support implementation of run-time reflection and allowing a program to manipulate objects with arbitrary types with the help of reflect package. The reflect.Copy() Function in Golang is used to copies the contents of the source into destination until either destination has been filled or source has been exhausted. To access this function, one needs to imports the reflect package in the program.
Syntax:
func Copy(dst, src Value) intParameters: This function takes two parameters of Slice or Array type. And dst and src must have the same element type.
Return Value: This function returns the number of elements copied.
Below examples illustrate the use of above method in Golang:
Example 1:
// Golang program to illustrate // reflect.Copy() Function package main import ( "fmt"
"reflect"
) // Main function func main() { // Source
src := reflect.ValueOf([] int {10, 20, 32})
/* make sure the dest space is larger than src */
// destination
dest := reflect.ValueOf([] int {1, 2, 3})
// To copy Copy() function is used
// and it returns the number of
// elements copied
cnt := reflect.Copy(dest, src)
data := dest.Interface().([] int )
data[0] = 100
// printing the values
fmt.Println( "Number of element Copied :" , cnt)
fmt.Println( "Source :" , src)
fmt.Println( "destination :" , dest)
} |
Output:
Number of element Copied : 3 Source : [10 20 32] destination : [100 20 32]
Example 2:
// Golang program to illustrate // reflect.Copy() Function package main import ( "fmt"
"reflect"
) // Struct with two int value type temp struct {
A0 [] int
A1 [] int
} // Main function func main() { var val temp
// Source
val.A0 = append(val.A0, [] int {1, 2, 3,
4, 5, 6, 7, 8, 9}...)
// destination
val.A1 = append(val.A1, 9, 8, 7, 6)
// To copy Copy() function is used
// and it returns the number of
// elements copied
var n = reflect.Copy(reflect.ValueOf(val.A0),
reflect.ValueOf(val.A1))
// printing the values
fmt.Println( "Number of element Copied :" , n)
fmt.Println( "{Source, destination} :" , val)
} |
Output:
Number of element Copied : 4 {Source, destination} : {[9 8 7 6 5 6 7 8 9] [9 8 7 6]}