From 86aa85820f21b54df428886797751be4c3ce26c4 Mon Sep 17 00:00:00 2001 From: devlights Date: Mon, 12 Apr 2021 09:33:00 +0000 Subject: [PATCH] Add examples (#356) --- internal/examples/basic/examples.go | 2 + internal/examples/basic/methods/README.md | 7 ++++ internal/examples/basic/methods/doc.go | 4 ++ internal/examples/basic/methods/examples.go | 19 +++++++++ .../examples/basic/methods/pointer_or_not.go | 39 +++++++++++++++++++ 5 files changed, 71 insertions(+) create mode 100644 internal/examples/basic/methods/README.md create mode 100644 internal/examples/basic/methods/doc.go create mode 100644 internal/examples/basic/methods/examples.go create mode 100644 internal/examples/basic/methods/pointer_or_not.go diff --git a/internal/examples/basic/examples.go b/internal/examples/basic/examples.go index 82f720c9..f3782325 100644 --- a/internal/examples/basic/examples.go +++ b/internal/examples/basic/examples.go @@ -27,6 +27,7 @@ import ( "github.com/devlights/try-golang/internal/examples/basic/logging" "github.com/devlights/try-golang/internal/examples/basic/maps" "github.com/devlights/try-golang/internal/examples/basic/maths" + "github.com/devlights/try-golang/internal/examples/basic/methods" "github.com/devlights/try-golang/internal/examples/basic/network" "github.com/devlights/try-golang/internal/examples/basic/runtimes" "github.com/devlights/try-golang/internal/examples/basic/scope" @@ -87,6 +88,7 @@ func (r *register) Regist(m mappings.ExampleMapping) { logging.NewRegister().Regist(m) maps.NewRegister().Regist(m) maths.NewRegister().Regist(m) + methods.NewRegister().Regist(m) network.NewRegister().Regist(m) runtimes.NewRegister().Regist(m) scope.NewRegister().Regist(m) diff --git a/internal/examples/basic/methods/README.md b/internal/examples/basic/methods/README.md new file mode 100644 index 00000000..9ab9638c --- /dev/null +++ b/internal/examples/basic/methods/README.md @@ -0,0 +1,7 @@ +# サンプルリスト + +このディレクトリには以下のサンプルがあります。 + +|file|example name|note| +|----|------------|----| +|pointer\_or\_not.go|methods\_pointer\_or\_not|メソッドのレシーバーをポインタで宣言するかしないかの違いについてのサンプルです.| diff --git a/internal/examples/basic/methods/doc.go b/internal/examples/basic/methods/doc.go new file mode 100644 index 00000000..333ed992 --- /dev/null +++ b/internal/examples/basic/methods/doc.go @@ -0,0 +1,4 @@ +/* +Package methods -- メソッドについてのサンプルが配置されているパッケージです。 +*/ +package methods diff --git a/internal/examples/basic/methods/examples.go b/internal/examples/basic/methods/examples.go new file mode 100644 index 00000000..8c89254a --- /dev/null +++ b/internal/examples/basic/methods/examples.go @@ -0,0 +1,19 @@ +package methods + +import ( + "github.com/devlights/try-golang/pkg/mappings" +) + +type ( + register struct{} +) + +// NewRegister -- このパッケージ用のサンプルを登録する mappings.Register を生成します。 +func NewRegister() mappings.Register { + return new(register) +} + +// Regist -- 登録します. +func (r *register) Regist(m mappings.ExampleMapping) { + m["methods_pointer_or_not"] = PointerOrNot +} diff --git a/internal/examples/basic/methods/pointer_or_not.go b/internal/examples/basic/methods/pointer_or_not.go new file mode 100644 index 00000000..c2a229e0 --- /dev/null +++ b/internal/examples/basic/methods/pointer_or_not.go @@ -0,0 +1,39 @@ +package methods + +import "github.com/devlights/gomy/output" + +type ( + _nonPointerReceiver struct { + val int + } + + _pointerReceiver struct { + val int + } +) + +func (me _nonPointerReceiver) update(val int) { + me.val = val +} + +func (me *_pointerReceiver) update(val int) { + me.val = val +} + +// PointerOrNot は、メソッドのレシーバーをポインタで宣言するかしないかの違いについてのサンプルです。 +func PointerOrNot() error { + var ( + nonPointer = _nonPointerReceiver{} + pointer = _pointerReceiver{} + ) + + // これは内部の値が更新されない + nonPointer.update(100) + // これは内部の値が更新される + pointer.update(100) + + output.Stdoutl("[non-pointer]", nonPointer.val) + output.Stdoutl("[pointer ]", pointer.val) + + return nil +}