diff --git a/array/README.md b/array/README.md deleted file mode 100644 index be7bbf5..0000000 --- a/array/README.md +++ /dev/null @@ -1,12 +0,0 @@ -## array.go - -配列 - -## slice.go - -スライス - -## append.go - -append関数の使い方や仕組み - diff --git a/array/append.go b/array/append.go deleted file mode 100644 index cda34dd..0000000 --- a/array/append.go +++ /dev/null @@ -1,24 +0,0 @@ -package main - -import "fmt" - -func main() { - ary := []int{} - for i := 0; i < 10; i++ { - ary = append(ary, i) - fmt.Printf("%d: %p len:%d cap:%d %v\n", i, ary, len(ary), cap(ary), ary) - } - /* - 0: 0x140000180b8 len:1 cap:1 [0] - 1: 0x140000180e0 len:2 cap:2 [0 1] - 2: 0x1400001e040 len:3 cap:4 [0 1 2] - 3: 0x1400001e040 len:4 cap:4 [0 1 2 3] - 4: 0x14000014100 len:5 cap:8 [0 1 2 3 4] - 5: 0x14000014100 len:6 cap:8 [0 1 2 3 4 5] - 6: 0x14000014100 len:7 cap:8 [0 1 2 3 4 5 6] - 7: 0x14000014100 len:8 cap:8 [0 1 2 3 4 5 6 7] - 8: 0x1400006e000 len:9 cap:16 [0 1 2 3 4 5 6 7 8] - 9: 0x1400006e000 len:10 cap:16 [0 1 2 3 4 5 6 7 8 9] - */ -} - diff --git a/array/array.go b/array/array.go deleted file mode 100644 index 9cd6461..0000000 --- a/array/array.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import "fmt" - -func main() { - var a[3]int // 要素の値を省略したらゼロ値 - fmt.Printf("a: %+v\n", a) // [0, 0, 0] - b := [3]int{1, 2, 3} - fmt.Printf("b: %+v\n", b) // [1, 2, 3] - c := [3]int{1, 2} - fmt.Printf("c: %+v\n", c) // [1, 2, 0] - d := [3]int{2: 2} - fmt.Printf("d: %+v\n", d) // [0, 0, 2] - e := [3]int{0:1, 1: 2} - fmt.Printf("e: %+v\n", e) // [1, 2, 0] - - // 要素が比較可能であればその配列型も比較可能 - fmt.Printf("a==b: %v\n", a == b) // false - fmt.Printf("c==e: %v\n", c == e) // true - // f := [4]int{} - // fmt.Printf("a==f: %v\n", a == f) // compile error: [3]int == [4]int - - hoge(a) - fmt.Printf("a: %+v\n", a) // [0, 0, 0] - // 値渡しなので安全だが性能的に非効率なことがある -} - -func hoge(arg [3]int) { - arg[0] = 4 - fmt.Printf("%+v\n", arg) // [4, 0, 0] -} diff --git a/array/slice.go b/array/slice.go deleted file mode 100644 index 705cb07..0000000 --- a/array/slice.go +++ /dev/null @@ -1,16 +0,0 @@ -package main - -import "fmt" - -func main() { - s := []string{0:"", 1:"Jan", 2:"Feb", 3:"Mar", 4:"Apr", 5:"May", 6:"Jun", 7:"Jul", 8:"Aug", 9:"Sep", 10:"Oct", 11:"Nov", 12:"Dec"} - fmt.Printf("%d\n", len(s)) // 13(0-12) - fmt.Printf("%+v\n", s[2:4]) // [Feb Mar] - fmt.Printf("%d\n", len(s[2:4])) // 2 - fmt.Printf("%d\n", cap(s[2:4])) // 11(2-12) - fmt.Printf("%+v\n", s[2:7]) // [Feb Mar Apr May Jun] - fmt.Printf("%d\n", len(s[2:7])) // 5 - fmt.Printf("%d\n", cap(s[2:7])) // 11(2-12) - fmt.Printf("%+v\n", s[:]) // [ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec] -} - diff --git a/collection/README.md b/collection/README.md new file mode 100644 index 0000000..be7bbf5 --- /dev/null +++ b/collection/README.md @@ -0,0 +1,12 @@ +## array.go + +配列 + +## slice.go + +スライス + +## append.go + +append関数の使い方や仕組み + diff --git a/collection/append.go b/collection/append.go new file mode 100644 index 0000000..cda34dd --- /dev/null +++ b/collection/append.go @@ -0,0 +1,24 @@ +package main + +import "fmt" + +func main() { + ary := []int{} + for i := 0; i < 10; i++ { + ary = append(ary, i) + fmt.Printf("%d: %p len:%d cap:%d %v\n", i, ary, len(ary), cap(ary), ary) + } + /* + 0: 0x140000180b8 len:1 cap:1 [0] + 1: 0x140000180e0 len:2 cap:2 [0 1] + 2: 0x1400001e040 len:3 cap:4 [0 1 2] + 3: 0x1400001e040 len:4 cap:4 [0 1 2 3] + 4: 0x14000014100 len:5 cap:8 [0 1 2 3 4] + 5: 0x14000014100 len:6 cap:8 [0 1 2 3 4 5] + 6: 0x14000014100 len:7 cap:8 [0 1 2 3 4 5 6] + 7: 0x14000014100 len:8 cap:8 [0 1 2 3 4 5 6 7] + 8: 0x1400006e000 len:9 cap:16 [0 1 2 3 4 5 6 7 8] + 9: 0x1400006e000 len:10 cap:16 [0 1 2 3 4 5 6 7 8 9] + */ +} + diff --git a/collection/array.go b/collection/array.go new file mode 100644 index 0000000..9cd6461 --- /dev/null +++ b/collection/array.go @@ -0,0 +1,31 @@ +package main + +import "fmt" + +func main() { + var a[3]int // 要素の値を省略したらゼロ値 + fmt.Printf("a: %+v\n", a) // [0, 0, 0] + b := [3]int{1, 2, 3} + fmt.Printf("b: %+v\n", b) // [1, 2, 3] + c := [3]int{1, 2} + fmt.Printf("c: %+v\n", c) // [1, 2, 0] + d := [3]int{2: 2} + fmt.Printf("d: %+v\n", d) // [0, 0, 2] + e := [3]int{0:1, 1: 2} + fmt.Printf("e: %+v\n", e) // [1, 2, 0] + + // 要素が比較可能であればその配列型も比較可能 + fmt.Printf("a==b: %v\n", a == b) // false + fmt.Printf("c==e: %v\n", c == e) // true + // f := [4]int{} + // fmt.Printf("a==f: %v\n", a == f) // compile error: [3]int == [4]int + + hoge(a) + fmt.Printf("a: %+v\n", a) // [0, 0, 0] + // 値渡しなので安全だが性能的に非効率なことがある +} + +func hoge(arg [3]int) { + arg[0] = 4 + fmt.Printf("%+v\n", arg) // [4, 0, 0] +} diff --git a/collection/slice.go b/collection/slice.go new file mode 100644 index 0000000..705cb07 --- /dev/null +++ b/collection/slice.go @@ -0,0 +1,16 @@ +package main + +import "fmt" + +func main() { + s := []string{0:"", 1:"Jan", 2:"Feb", 3:"Mar", 4:"Apr", 5:"May", 6:"Jun", 7:"Jul", 8:"Aug", 9:"Sep", 10:"Oct", 11:"Nov", 12:"Dec"} + fmt.Printf("%d\n", len(s)) // 13(0-12) + fmt.Printf("%+v\n", s[2:4]) // [Feb Mar] + fmt.Printf("%d\n", len(s[2:4])) // 2 + fmt.Printf("%d\n", cap(s[2:4])) // 11(2-12) + fmt.Printf("%+v\n", s[2:7]) // [Feb Mar Apr May Jun] + fmt.Printf("%d\n", len(s[2:7])) // 5 + fmt.Printf("%d\n", cap(s[2:7])) // 11(2-12) + fmt.Printf("%+v\n", s[:]) // [ Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec] +} +