关于golang的reflect包copy函数的使用
package main
import(
"reflect"
"fmt"
)
type Student struct{
Name string`json:"name"`
Age int`json:"age"`
Gender string`json:"gender"`
}
func main() {
src := []Student{
{
Name:"tsong",
Age:30,
Gender:"male",
},
{
Name:"tsong",
Age:30,
Gender:"male",
},
}
dst := []Student{
{
Name:"tsong1",
Age:28,
Gender:"male1",
},
{
Name:"tsong1",
Age:28,
Gender:"male1",
},
}
fmt.Println(dst)
src_v := reflect.ValueOf(src)
dst_v := reflect.ValueOf(dst)
num := reflect.Copy(dst_v,src_v)
fmt.Println(num)
fmt.Println(dst)
a := []int{1,2,3,4}
b := []int{0,0,0,0}
b_flase := []int{}
b_flase := [4]int{}
a_v := reflect.ValueOf(a)
b_v := reflect.ValueOf(b)
num = reflect.Copy(b_v,a_v)
fmt.Println(a_v)
fmt.Println(b_v)
}
说明:在使用copy函数时copy(dst,src value)中的dst不可以使用系统提供的默认值
可以这么定义dst结构,但是不可以使用下面的方式,否则会copy不成功
dst := []Student{
{
Name:"",
Age:0,
Gender:"",
},
{
Name:"",
Age:0,
Gender:"",
},
}
不正确的数据结构定义
dst := []Student{}