From 1e91001ac340a13d2ef36cf2ead789025ab0e16c Mon Sep 17 00:00:00 2001 From: devlights Date: Sun, 10 Sep 2023 23:36:13 +0900 Subject: [PATCH 1/3] Add zerovalues examples --- examples/basic/examples.go | 2 ++ examples/basic/zerovalues/README.md | 7 +++++++ examples/basic/zerovalues/bool.go | 21 ++++++++++++++++++++ examples/basic/zerovalues/doc.go | 4 ++++ examples/basic/zerovalues/examples.go | 25 ++++++++++++++++++++++++ examples/basic/zerovalues/float.go | 21 ++++++++++++++++++++ examples/basic/zerovalues/int.go | 21 ++++++++++++++++++++ examples/basic/zerovalues/map.go | 28 +++++++++++++++++++++++++++ examples/basic/zerovalues/pointer.go | 21 ++++++++++++++++++++ examples/basic/zerovalues/slice.go | 27 ++++++++++++++++++++++++++ examples/basic/zerovalues/string.go | 21 ++++++++++++++++++++ 11 files changed, 198 insertions(+) create mode 100644 examples/basic/zerovalues/README.md create mode 100644 examples/basic/zerovalues/bool.go create mode 100644 examples/basic/zerovalues/doc.go create mode 100644 examples/basic/zerovalues/examples.go create mode 100644 examples/basic/zerovalues/float.go create mode 100644 examples/basic/zerovalues/int.go create mode 100644 examples/basic/zerovalues/map.go create mode 100644 examples/basic/zerovalues/pointer.go create mode 100644 examples/basic/zerovalues/slice.go create mode 100644 examples/basic/zerovalues/string.go diff --git a/examples/basic/examples.go b/examples/basic/examples.go index 92bf062a..77854156 100644 --- a/examples/basic/examples.go +++ b/examples/basic/examples.go @@ -70,6 +70,7 @@ import ( "github.com/devlights/try-golang/examples/basic/variables" "github.com/devlights/try-golang/examples/basic/xmlop" "github.com/devlights/try-golang/examples/basic/yamlop" + "github.com/devlights/try-golang/examples/basic/zerovalues" "github.com/devlights/try-golang/mapping" ) @@ -155,4 +156,5 @@ func (r *register) Regist(m mapping.ExampleMapping) { variables.NewRegister().Regist(m) xmlop.NewRegister().Regist(m) yamlop.NewRegister().Regist(m) + zerovalues.NewRegister().Regist(m) } diff --git a/examples/basic/zerovalues/README.md b/examples/basic/zerovalues/README.md new file mode 100644 index 00000000..90c6a82c --- /dev/null +++ b/examples/basic/zerovalues/README.md @@ -0,0 +1,7 @@ +# サンプルリスト + +このディレクトリには以下のサンプルがあります。 + +|file|example name|note| +|----|------------|----| +|int.go|zerovalues\_int|Goにおける int のゼロ値についてのサンプルです.| diff --git a/examples/basic/zerovalues/bool.go b/examples/basic/zerovalues/bool.go new file mode 100644 index 00000000..81922428 --- /dev/null +++ b/examples/basic/zerovalues/bool.go @@ -0,0 +1,21 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Bool は、Goにおける bool のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go-tour-jp.appspot.com/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Bool() error { + // + // bool の ゼロ値 は false + // + var ( + b bool + ) + + output.Stdoutf("[bool zerovalue]", "%t\n", b) + + return nil +} diff --git a/examples/basic/zerovalues/doc.go b/examples/basic/zerovalues/doc.go new file mode 100644 index 00000000..615bbc92 --- /dev/null +++ b/examples/basic/zerovalues/doc.go @@ -0,0 +1,4 @@ +/* +Package zerovalues -- Go言語の ゼロ値 についてのサンプルが配置されているパッケージです。 +*/ +package zerovalues diff --git a/examples/basic/zerovalues/examples.go b/examples/basic/zerovalues/examples.go new file mode 100644 index 00000000..3a317f17 --- /dev/null +++ b/examples/basic/zerovalues/examples.go @@ -0,0 +1,25 @@ +package zerovalues + +import ( + "github.com/devlights/try-golang/mapping" +) + +type ( + register struct{} +) + +// NewRegister -- このパッケージ用のサンプルを登録する mapping.Register を生成します。 +func NewRegister() mapping.Register { + return new(register) +} + +// Regist -- 登録します. +func (r *register) Regist(m mapping.ExampleMapping) { + m["zerovalues_int"] = Int + m["zerovalues_float"] = Float + m["zerovalues_bool"] = Bool + m["zerovalues_string"] = String + m["zerovalues_pointer"] = Pointer + m["zerovalues_slice"] = Slice + m["zerovalues_map"] = Map +} diff --git a/examples/basic/zerovalues/float.go b/examples/basic/zerovalues/float.go new file mode 100644 index 00000000..e34f7733 --- /dev/null +++ b/examples/basic/zerovalues/float.go @@ -0,0 +1,21 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Float は、Goにおける float のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go-tour-jp.appspot.com/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Float() error { + // + // float (float32, float64) の ゼロ値 は 0.0 + // + var ( + f float64 + ) + + output.Stdoutf("[float zerovalue]", "%.1f\n", f) + + return nil +} diff --git a/examples/basic/zerovalues/int.go b/examples/basic/zerovalues/int.go new file mode 100644 index 00000000..9065f0f9 --- /dev/null +++ b/examples/basic/zerovalues/int.go @@ -0,0 +1,21 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Int は、Goにおける int のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go-tour-jp.appspot.com/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Int() error { + // + // int の ゼロ値 は 0 + // + var ( + i int + ) + + output.Stdoutf("[int zerovalue]", "%d\n", i) + + return nil +} diff --git a/examples/basic/zerovalues/map.go b/examples/basic/zerovalues/map.go new file mode 100644 index 00000000..203ec2b5 --- /dev/null +++ b/examples/basic/zerovalues/map.go @@ -0,0 +1,28 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Map は、Goにおける マップ のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go-tour-jp.appspot.com/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Map() error { + // + // マップ の ゼロ値 は nil + // 注意点として マップ の場合、ゼロ値をprintfすると map[] と表示される. + // アドレスを表示すると ゼロ値 の場合は 0x0 と表示される. + // スライスとは違い ゼロ値 のマップにはキーを追加出来ない. + // + var ( + m map[int]string + ) + + output.Stdoutf("[map zerovalue]", "%v\t%p\tNIL?=%t\n", m, m, m == nil) + + // 以下のようにエラーとなる + // m[100] = "apple" + // >> panic: assignment to entry in nil map + + return nil +} diff --git a/examples/basic/zerovalues/pointer.go b/examples/basic/zerovalues/pointer.go new file mode 100644 index 00000000..948d5c97 --- /dev/null +++ b/examples/basic/zerovalues/pointer.go @@ -0,0 +1,21 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Pointer は、Goにおける ポインタ のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go-tour-jp.appspot.com/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Pointer() error { + // + // ポインタ の ゼロ値 は nil + // + var ( + p *int + ) + + output.Stdoutf("[pointer zerovalue]", "%v\n", p) + + return nil +} diff --git a/examples/basic/zerovalues/slice.go b/examples/basic/zerovalues/slice.go new file mode 100644 index 00000000..3e5ecfd1 --- /dev/null +++ b/examples/basic/zerovalues/slice.go @@ -0,0 +1,27 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Slice は、Goにおける スライス のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go-tour-jp.appspot.com/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Slice() error { + // + // スライス の ゼロ値 は nil + // 注意点として スライス の場合、ゼロ値をprintfすると [] と表示される. + // アドレスを表示すると ゼロ値 の場合は 0x0 と表示される. + // また、append() には ゼロ値のスライス を渡すことが可能な点に注意. + // + var ( + s []int + ) + + output.Stdoutf("[slice zerovalue]", "%v\t%p\tNIL?=%t\n", s, s, s == nil) + + s = append(s, 100) + output.Stdoutf("[slice after append]", "%v\t%p\tNIL?=%t\n", s, s, s == nil) + + return nil +} diff --git a/examples/basic/zerovalues/string.go b/examples/basic/zerovalues/string.go new file mode 100644 index 00000000..5b7570f3 --- /dev/null +++ b/examples/basic/zerovalues/string.go @@ -0,0 +1,21 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// String は、Goにおける string のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go-tour-jp.appspot.com/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func String() error { + // + // string の ゼロ値 は 空文字 ("") + // + var ( + s string + ) + + output.Stdoutf("[string zerovalue]", "%q\n", s) + + return nil +} From 8b6424336b8766f420f1bb99fa071e3273f1cd9b Mon Sep 17 00:00:00 2001 From: devlights Date: Sun, 10 Sep 2023 14:40:11 +0000 Subject: [PATCH 2/3] Fix comments --- examples/basic/zerovalues/bool.go | 2 +- examples/basic/zerovalues/float.go | 2 +- examples/basic/zerovalues/int.go | 2 +- examples/basic/zerovalues/map.go | 2 +- examples/basic/zerovalues/pointer.go | 2 +- examples/basic/zerovalues/slice.go | 2 +- examples/basic/zerovalues/string.go | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/examples/basic/zerovalues/bool.go b/examples/basic/zerovalues/bool.go index 81922428..a93d0ff4 100644 --- a/examples/basic/zerovalues/bool.go +++ b/examples/basic/zerovalues/bool.go @@ -5,7 +5,7 @@ import "github.com/devlights/gomy/output" // Bool は、Goにおける bool のゼロ値についてのサンプルです. // // # REFERENCES -// - https://go-tour-jp.appspot.com/basics/12 +// - https://go.dev/tour/basics/12 // - https://brain2life.hashnode.dev/default-zero-values-in-go func Bool() error { // diff --git a/examples/basic/zerovalues/float.go b/examples/basic/zerovalues/float.go index e34f7733..4b36ef8c 100644 --- a/examples/basic/zerovalues/float.go +++ b/examples/basic/zerovalues/float.go @@ -5,7 +5,7 @@ import "github.com/devlights/gomy/output" // Float は、Goにおける float のゼロ値についてのサンプルです. // // # REFERENCES -// - https://go-tour-jp.appspot.com/basics/12 +// - https://go.dev/tour/basics/12 // - https://brain2life.hashnode.dev/default-zero-values-in-go func Float() error { // diff --git a/examples/basic/zerovalues/int.go b/examples/basic/zerovalues/int.go index 9065f0f9..3d293f31 100644 --- a/examples/basic/zerovalues/int.go +++ b/examples/basic/zerovalues/int.go @@ -5,7 +5,7 @@ import "github.com/devlights/gomy/output" // Int は、Goにおける int のゼロ値についてのサンプルです. // // # REFERENCES -// - https://go-tour-jp.appspot.com/basics/12 +// - https://go.dev/tour/basics/12 // - https://brain2life.hashnode.dev/default-zero-values-in-go func Int() error { // diff --git a/examples/basic/zerovalues/map.go b/examples/basic/zerovalues/map.go index 203ec2b5..0486f267 100644 --- a/examples/basic/zerovalues/map.go +++ b/examples/basic/zerovalues/map.go @@ -5,7 +5,7 @@ import "github.com/devlights/gomy/output" // Map は、Goにおける マップ のゼロ値についてのサンプルです. // // # REFERENCES -// - https://go-tour-jp.appspot.com/basics/12 +// - https://go.dev/tour/basics/12 // - https://brain2life.hashnode.dev/default-zero-values-in-go func Map() error { // diff --git a/examples/basic/zerovalues/pointer.go b/examples/basic/zerovalues/pointer.go index 948d5c97..4286513b 100644 --- a/examples/basic/zerovalues/pointer.go +++ b/examples/basic/zerovalues/pointer.go @@ -5,7 +5,7 @@ import "github.com/devlights/gomy/output" // Pointer は、Goにおける ポインタ のゼロ値についてのサンプルです. // // # REFERENCES -// - https://go-tour-jp.appspot.com/basics/12 +// - https://go.dev/tour/basics/12 // - https://brain2life.hashnode.dev/default-zero-values-in-go func Pointer() error { // diff --git a/examples/basic/zerovalues/slice.go b/examples/basic/zerovalues/slice.go index 3e5ecfd1..dbcbdc07 100644 --- a/examples/basic/zerovalues/slice.go +++ b/examples/basic/zerovalues/slice.go @@ -5,7 +5,7 @@ import "github.com/devlights/gomy/output" // Slice は、Goにおける スライス のゼロ値についてのサンプルです. // // # REFERENCES -// - https://go-tour-jp.appspot.com/basics/12 +// - https://go.dev/tour/basics/12 // - https://brain2life.hashnode.dev/default-zero-values-in-go func Slice() error { // diff --git a/examples/basic/zerovalues/string.go b/examples/basic/zerovalues/string.go index 5b7570f3..dc3f5409 100644 --- a/examples/basic/zerovalues/string.go +++ b/examples/basic/zerovalues/string.go @@ -5,7 +5,7 @@ import "github.com/devlights/gomy/output" // String は、Goにおける string のゼロ値についてのサンプルです. // // # REFERENCES -// - https://go-tour-jp.appspot.com/basics/12 +// - https://go.dev/tour/basics/12 // - https://brain2life.hashnode.dev/default-zero-values-in-go func String() error { // From cee1a038e1a6da8c5b55494cf5d5cccc5a86e929 Mon Sep 17 00:00:00 2001 From: devlights Date: Sun, 10 Sep 2023 15:05:20 +0000 Subject: [PATCH 3/3] Add zerovalue examples --- examples/basic/zerovalues/README.md | 10 +++++++++ examples/basic/zerovalues/array.go | 21 ++++++++++++++++++ examples/basic/zerovalues/channel.go | 21 ++++++++++++++++++ examples/basic/zerovalues/examples.go | 4 ++++ examples/basic/zerovalues/func.go | 22 ++++++++++++++++++ examples/basic/zerovalues/struct.go | 32 +++++++++++++++++++++++++++ 6 files changed, 110 insertions(+) create mode 100644 examples/basic/zerovalues/array.go create mode 100644 examples/basic/zerovalues/channel.go create mode 100644 examples/basic/zerovalues/func.go create mode 100644 examples/basic/zerovalues/struct.go diff --git a/examples/basic/zerovalues/README.md b/examples/basic/zerovalues/README.md index 90c6a82c..f00f6ba2 100644 --- a/examples/basic/zerovalues/README.md +++ b/examples/basic/zerovalues/README.md @@ -5,3 +5,13 @@ |file|example name|note| |----|------------|----| |int.go|zerovalues\_int|Goにおける int のゼロ値についてのサンプルです.| +|float.go|zerovalues\_float|Goにおける float のゼロ値についてのサンプルです.| +|bool.go|zerovalues\_bool|Goにおける bool のゼロ値についてのサンプルです.| +|string.go|zerovalues\_string|Goにおける string のゼロ値についてのサンプルです.| +|pointer.go|zerovalues\_pointer|Goにおける ポインタ のゼロ値についてのサンプルです.| +|slice.go|zerovalues\_slice|Goにおける スライス のゼロ値についてのサンプルです.| +|map.go|zerovalues\_map|Goにおける マップ のゼロ値についてのサンプルです.| +|channel.go|zerovalues\_chan|Goにおける チャネル のゼロ値についてのサンプルです.| +|func.go|zerovalues\_func|Goにおける 関数 のゼロ値についてのサンプルです.| +|array.go|zerovalues\_array|Goにおける 配列 のゼロ値についてのサンプルです.| +|struct.go|zerovalues\_struct|Goにおける 構造体 のゼロ値についてのサンプルです.| diff --git a/examples/basic/zerovalues/array.go b/examples/basic/zerovalues/array.go new file mode 100644 index 00000000..161460bd --- /dev/null +++ b/examples/basic/zerovalues/array.go @@ -0,0 +1,21 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Array は、Goにおける 配列 のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go.dev/tour/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Array() error { + // + // 配列 の ゼロ値 は、その配列の基底型のゼロ値が指定要素数分設定されている状態. + // + var ( + a [10]int + ) + + output.Stdoutf("[array zerovalue ]", "%v\n", a) + + return nil +} \ No newline at end of file diff --git a/examples/basic/zerovalues/channel.go b/examples/basic/zerovalues/channel.go new file mode 100644 index 00000000..9f43b076 --- /dev/null +++ b/examples/basic/zerovalues/channel.go @@ -0,0 +1,21 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Channel は、Goにおける チャネル のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go.dev/tour/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Channel() error { + // + // チャネル の ゼロ値 は nil + // + var ( + ch chan int + ) + + output.Stdoutf("[chan zerovalue]", "%v\n", ch) + + return nil +} diff --git a/examples/basic/zerovalues/examples.go b/examples/basic/zerovalues/examples.go index 3a317f17..748feaaf 100644 --- a/examples/basic/zerovalues/examples.go +++ b/examples/basic/zerovalues/examples.go @@ -22,4 +22,8 @@ func (r *register) Regist(m mapping.ExampleMapping) { m["zerovalues_pointer"] = Pointer m["zerovalues_slice"] = Slice m["zerovalues_map"] = Map + m["zerovalues_chan"] = Channel + m["zerovalues_func"] = Func + m["zerovalues_array"] = Array + m["zerovalues_struct"] = Struct } diff --git a/examples/basic/zerovalues/func.go b/examples/basic/zerovalues/func.go new file mode 100644 index 00000000..15224b5d --- /dev/null +++ b/examples/basic/zerovalues/func.go @@ -0,0 +1,22 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Func は、Goにおける 関数 のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go.dev/tour/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Func() error { + // + // 関数 の ゼロ値 は nil + // + var ( + fn1 func() + fn2 = func() {} + ) + + output.Stdoutf("[func zerovalue]", "%p:%p\n", fn1, fn2) + + return nil +} diff --git a/examples/basic/zerovalues/struct.go b/examples/basic/zerovalues/struct.go new file mode 100644 index 00000000..c7a3b9bf --- /dev/null +++ b/examples/basic/zerovalues/struct.go @@ -0,0 +1,32 @@ +package zerovalues + +import "github.com/devlights/gomy/output" + +// Struct は、Goにおける 構造体 のゼロ値についてのサンプルです. +// +// # REFERENCES +// - https://go.dev/tour/basics/12 +// - https://brain2life.hashnode.dev/default-zero-values-in-go +func Struct() error { + // + // 構造体 の ゼロ値 は、フィールドの型毎にゼロ値が設定された状態. + // + type ( + _st struct { + i int + b bool + } + ) + + var ( + st _st + ) + + output.Stdoutf("[struct zerovalue]", "%+v\n", st) + + st.i = 100 + st.b = true + output.Stdoutf("[struct assign values]", "%+v\n", st) + + return nil +}