1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- package cputil
- import (
- "testing"
- "github.com/google/go-cmp/cmp"
- "github.com/stretchr/testify/require"
- )
- type Dummy struct {
- A1 int
- A2 int
- B1 bool
- B2 bool
- C1 map[string]interface{}
- D1 []int
- }
- func TestShallowCopy(t *testing.T) {
- d1 := &Dummy{
- A1: 0,
- A2: 1,
- B1: false,
- B2: true,
- C1: map[string]interface{}{
- "a": 1,
- },
- D1: []int{0, 1},
- }
- d2 := &Dummy{}
- _ = ShallowCopy(&d2, d1)
- require.Empty(t, cmp.Diff(d1, d2))
- // case: 浅拷贝会互相影响
- d1.C1["a"] = 2
- require.Equal(t, d2.C1["a"], d1.C1["a"])
- }
- func TestDeepCopy(t *testing.T) {
- d1 := &Dummy{
- A1: 0,
- A2: 1,
- B1: false,
- B2: true,
- C1: map[string]interface{}{
- "a": 1,
- },
- D1: []int{0, 1},
- }
- d2 := &Dummy{}
- _ = DeepCopy(&d2, d1)
- require.Empty(t, cmp.Diff(d1, d2))
- // case: 深拷贝不会互相影响
- d1.C1["a"] = 2
- require.NotEqual(t, d2.C1["a"], d1.C1["a"])
- }
|