Skip to content

Commit ab6e728

Browse files
authored
Merge pull request #361 from devlights/devlights/t-t-356
Add examples (#356)
2 parents c00f3c7 + 86aa858 commit ab6e728

File tree

5 files changed

+71
-0
lines changed

5 files changed

+71
-0
lines changed

internal/examples/basic/examples.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff 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)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
# サンプルリスト
2+
3+
このディレクトリには以下のサンプルがあります。
4+
5+
|file|example name|note|
6+
|----|------------|----|
7+
|pointer\_or\_not.go|methods\_pointer\_or\_not|メソッドのレシーバーをポインタで宣言するかしないかの違いについてのサンプルです.|
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/*
2+
Package methods -- メソッドについてのサンプルが配置されているパッケージです。
3+
*/
4+
package methods
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
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+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
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+
}

0 commit comments

Comments
 (0)