File tree Expand file tree Collapse file tree 5 files changed +71
-0
lines changed
Expand file tree Collapse file tree 5 files changed +71
-0
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ import (
2727 "github.com/devlights/try-golang/internal/examples/basic/logging"
2828 "github.com/devlights/try-golang/internal/examples/basic/maps"
2929 "github.com/devlights/try-golang/internal/examples/basic/maths"
30+ "github.com/devlights/try-golang/internal/examples/basic/methods"
3031 "github.com/devlights/try-golang/internal/examples/basic/network"
3132 "github.com/devlights/try-golang/internal/examples/basic/runtimes"
3233 "github.com/devlights/try-golang/internal/examples/basic/scope"
@@ -87,6 +88,7 @@ func (r *register) Regist(m mappings.ExampleMapping) {
8788 logging .NewRegister ().Regist (m )
8889 maps .NewRegister ().Regist (m )
8990 maths .NewRegister ().Regist (m )
91+ methods .NewRegister ().Regist (m )
9092 network .NewRegister ().Regist (m )
9193 runtimes .NewRegister ().Regist (m )
9294 scope .NewRegister ().Regist (m )
Original file line number Diff line number Diff line change 1+ # サンプルリスト
2+
3+ このディレクトリには以下のサンプルがあります。
4+
5+ | file| example name| note|
6+ | ----| ------------| ----|
7+ | pointer\_ or\_ not.go| methods\_ pointer\_ or\_ not| メソッドのレシーバーをポインタで宣言するかしないかの違いについてのサンプルです.|
Original file line number Diff line number Diff line change 1+ /*
2+ Package methods -- メソッドについてのサンプルが配置されているパッケージです。
3+ */
4+ package methods
Original file line number Diff line number Diff line change 1+ package methods
2+
3+ import (
4+ "github.com/devlights/try-golang/pkg/mappings"
5+ )
6+
7+ type (
8+ register struct {}
9+ )
10+
11+ // NewRegister -- このパッケージ用のサンプルを登録する mappings.Register を生成します。
12+ func NewRegister () mappings.Register {
13+ return new (register )
14+ }
15+
16+ // Regist -- 登録します.
17+ func (r * register ) Regist (m mappings.ExampleMapping ) {
18+ m ["methods_pointer_or_not" ] = PointerOrNot
19+ }
Original file line number Diff line number Diff line change 1+ package methods
2+
3+ import "github.com/devlights/gomy/output"
4+
5+ type (
6+ _nonPointerReceiver struct {
7+ val int
8+ }
9+
10+ _pointerReceiver struct {
11+ val int
12+ }
13+ )
14+
15+ func (me _nonPointerReceiver ) update (val int ) {
16+ me .val = val
17+ }
18+
19+ func (me * _pointerReceiver ) update (val int ) {
20+ me .val = val
21+ }
22+
23+ // PointerOrNot は、メソッドのレシーバーをポインタで宣言するかしないかの違いについてのサンプルです。
24+ func PointerOrNot () error {
25+ var (
26+ nonPointer = _nonPointerReceiver {}
27+ pointer = _pointerReceiver {}
28+ )
29+
30+ // これは内部の値が更新されない
31+ nonPointer .update (100 )
32+ // これは内部の値が更新される
33+ pointer .update (100 )
34+
35+ output .Stdoutl ("[non-pointer]" , nonPointer .val )
36+ output .Stdoutl ("[pointer ]" , pointer .val )
37+
38+ return nil
39+ }
You can’t perform that action at this time.
0 commit comments