Skip to content

Commit 43bda5f

Browse files
committed
Update
1 parent d3e3b7b commit 43bda5f

File tree

2 files changed

+11
-15
lines changed

2 files changed

+11
-15
lines changed

examples/advanced/deepcopy/gob_deepcopy.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ func GobDeepCopy() error {
3333
// - エクスポートされていないフィールド
3434
// 上記の型の場合、定義されていても無視される。
3535
//
36-
// 基本的に、encoding/gobの方がencoding/jsonよりもパフォーマンスが良い。
36+
// また、gobは最初の出力時に型の情報を出力するようになっているため
37+
// 単発でディープコピーをする場合には encoding/json の方が速い。(jsonにはこのフェーズが無いため)
3738
// --------------------------------------------------------------------------
3839
clone := func(from, to any) {
3940
var (

examples/advanced/deepcopy/json_deepcopy.go

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package deepcopy
22

33
import (
44
"encoding/json"
5-
"fmt"
65

76
"github.com/devlights/gomy/output"
87
)
@@ -27,11 +26,7 @@ func JsonDeepCopy() error {
2726
//
2827
// 以下は encoding/json を利用した方法
2928
// --------------------------------------------------------------------------
30-
pa := func(v interface{}) string {
31-
return fmt.Sprintf("%p", v)
32-
}
33-
34-
clone := func(from, to interface{}) {
29+
clone := func(from, to any) {
3530
b, _ := json.Marshal(from)
3631
_ = json.Unmarshal(b, to)
3732
}
@@ -48,8 +43,8 @@ func JsonDeepCopy() error {
4843
clone(&i, &i2)
4944
clone(&s, &s2)
5045

51-
output.Stdoutl("[i, i2]", i, i2, pa(&i), pa(&i2))
52-
output.Stdoutl("[s, s2]", s, s2, &s, &s2)
46+
output.Stdoutl("[i, i2]", i, i2)
47+
output.Stdoutl("[s, s2]", s, s2)
5348

5449
// --------------------------------------------------------------------------
5550
// スライス
@@ -59,10 +54,10 @@ func JsonDeepCopy() error {
5954
)
6055

6156
clone(&sli1, &sli2)
62-
output.Stdoutl("[sli1, sli2]", sli1, sli2, pa(&sli1), pa(&sli2))
57+
output.Stdoutl("[sli1, sli2][1]", sli1, sli2)
6358

6459
sli1[0] = 100
65-
output.Stdoutl("[sli1, sli2]", sli1, sli2, pa(&sli1), pa(&sli2))
60+
output.Stdoutl("[sli1, sli2][2]", sli1, sli2)
6661

6762
// --------------------------------------------------------------------------
6863
// マップ
@@ -72,10 +67,10 @@ func JsonDeepCopy() error {
7267
)
7368

7469
clone(&map1, &map2)
75-
output.Stdoutl("[map1, map2]", map1, map2, pa(&map1), pa(&map2))
70+
output.Stdoutl("[map1, map2][1]", map1, map2)
7671

7772
map1[1] = "melon"
78-
output.Stdoutl("[map1, map2]", map1, map2, pa(&map1), pa(&map2))
73+
output.Stdoutl("[map1, map2][2]", map1, map2)
7974

8075
// --------------------------------------------------------------------------
8176
// 構造体
@@ -99,11 +94,11 @@ func JsonDeepCopy() error {
9994
)
10095

10196
clone(&b1, &b2)
102-
output.Stdoutl("[b1, b2]", b1, b2, pa(&b1), pa(&b2))
97+
output.Stdoutl("[b1, b2][1]", b1, b2)
10398

10499
b1.Value = "world"
105100
b1.ValueB = "hello"
106-
output.Stdoutl("[b1, b2]", b1, b2, pa(&b1), pa(&b2))
101+
output.Stdoutl("[b1, b2][2]", b1, b2)
107102

108103
return nil
109104
}

0 commit comments

Comments
 (0)