Slide 1

Slide 1 text

ϋϚΔεϥΠεͷ࿩ 2019/4/20 #Umeda.go γφδʔϚʔέςΟϯάגࣜձࣾ ౔԰ߐཬՂʢ@tsun_002ʣ

Slide 2

Slide 2 text

ࣗݾ঺հ • ౔԰ߐཬՂ • @tsun_0002 • γφδʔϚʔέςΟϯάגࣜձࣾͰ
 JavaΛ࢖ͬͨ޿ࠂؔ࿈ͷαʔϏε։ൃΛ͍ͯ͠·͢ • Go͸झຯϨϕϧͰ࢖͍ͬͯ·͢…( ˘ω˘)

Slide 3

Slide 3 text

εϥΠεͷίϐʔ͸ όάΛੜΈग़͠΍͍͢ͷͰ ࢖Θͳ͍ํ͕͍͍

Slide 4

Slide 4 text

ෆࢥٞ(?)ͳମݧΛ͠·ͨ͠

Slide 5

Slide 5 text

s := []int{1, 2, 3, 4, 5, 6} ss := s[2:5] s:[1 2 3 4 5 6] ss:[3 4 5] εϥΠεΛఆٛ͢Δ

Slide 6

Slide 6 text

ss[2] = 500 s:[1 2 3 4 500 6] ss:[3 4 500] ssͷ஋Λม͑Δ

Slide 7

Slide 7 text

ss = append(ss, 10) s:[1 2 3 4 500 10] ss:[3 4 500 10] ssʹཁૉΛ௥Ճ͢Δ

Slide 8

Slide 8 text

ssͷ஋Λมߋ͢Δͱ ίϐʔݩͷsͷ஋΋มΘͬͨ

Slide 9

Slide 9 text

ss = append(ss, 20) ΋͏͍ͪͲssʹཁૉΛ௥Ճ͢Δ s:[1 2 3 4 500 10 ???] ss:[3 4 500 10 ???]

Slide 10

Slide 10 text

ss = append(ss, 20) s:[1 2 3 4 500 10 ] ss:[3 4 500 10 20] ΋͏͍ͪͲssʹཁૉΛ௥Ճ͢Δ

Slide 11

Slide 11 text

ss[2] = 50000 ΋͏͍ͪͲssͷ஋Λม͑Δ s:[1 2 3 4 ??? 10 ] ss:[3 4 ??? 10 20]

Slide 12

Slide 12 text

ss[2] = 50000 ΋͏͍ͪͲssͷ஋Λม͑Δ s:[1 2 3 4 500 10 ] ss:[3 4 50000 10 20]

Slide 13

Slide 13 text

ssΛมߋͯ͠΋ ίϐʔݩͷsͷ஋͕มΘΒͳ͔ͬͨ ΍ͬͯΈͯͶ https://play.golang.org/p/mvhWmDbCAAu

Slide 14

Slide 14 text

֎ͤͳ͍ϝϞϦͷ࿩

Slide 15

Slide 15 text

1 sͷग़ྗ஋ ௕͞ɿ3 ΩϟύγςΟ: 4 2 3 4 5 6 1 2 3 4 5 6 ϝϞϦ্ͷ ഑ྻ ssͷࢀরൣғ sͷࢀরൣғ 3 4 5 s := []int{1, 2, 3, 4, 5, 6} ss := s[2:5] sͱss͸ಉ͡ϝϞϦ্ͷ഑ྻ Λࢀর͢Δɻ εϥΠεΛίϐʔ͢Δͱ ࠷ॳͷࢦఆҐஔҎ߱͢΂ͯ ͷϝϞϦ্ͷ഑ྻΛࢀর͢Δɻ ͦͷͨΊɺ ssͷग़ྗ஋͸ <>͕ͩɺ ࢀরൣғ͸ϝϞϦ্ͷ Ҏ߱ɻ ssͷग़ྗ஋

Slide 16

Slide 16 text

1 sͷग़ྗ஋ ssͷग़ྗ஋ ௕͞ɿ3 ΩϟύγςΟ: 4 2 3 4 5 6 1 2 3 4 500 6 ϝϞϦ্ͷ ഑ྻ sͷࢀরൣғ 3 4 500 ss͕ࢀর͍ͯ͠Δ ϝϞϦ্ͷ഑ྻ͕มߋ͞ΕΔɻ ss[2] = 500 ssͷࢀরൣғ

Slide 17

Slide 17 text

1 sͷग़ྗ஋ ௕͞ɿ3 ΩϟύγςΟ: 4 2 3 4 500 6 1 2 3 4 500 6 ϝϞϦ্ͷ ഑ྻ sͷࢀরൣғ 1 2 500 ssͷग़ྗ஋ s͸ssͱಉ͡ϝϞϦ্ͷ഑ྻΛ ࢀর͍ͯ͠ΔͷͰɺ sͷग़ྗ݁Ռ΋มΘΔɻ ss[2] = 500 ssͷࢀরൣғ

Slide 18

Slide 18 text

1 sͷग़ྗ஋ ௕͞ɿ4 ΩϟύγςΟ: 4 2 3 4 500 6 1 2 3 4 500 10 ϝϞϦ্ͷ ഑ྻ s1ͷࢀরൣғ sͷࢀরൣғ 1 2 500 10 append͸εϥΠεͷ ΩϟύγςΟʹ༨༟͕͋Δͱ͖ɺ εϥΠε͕ࢀর͍ͯ͠Δ ഑ྻͷ஋Λมߋ͢Δɻ ssͷग़ྗ஋ ss = append(ss, 10)

Slide 19

Slide 19 text

1 sͷग़ྗ஋ ௕͞ɿ4 ΩϟύγςΟ: 4 2 3 4 500 10 1 2 3 4 500 10 ϝϞϦ্ͷ ഑ྻ s1ͷࢀরൣғ sͷࢀরൣғ 1 2 500 10 s͸ssͱಉ͡ϝϞϦ্ͷ഑ྻΛ ࢀর͍ͯ͠ΔͷͰɺ sͷग़ྗ݁Ռ΋มΘΔɻ ssͷग़ྗ஋ ss = append(ss, 10)

Slide 20

Slide 20 text

ΩϟύγςΟͷ᠘

Slide 21

Slide 21 text

1 sͷग़ྗ஋ ssͷग़ྗ஋ ௕͞ɿ5 ΩϟύγςΟ: 8 2 3 4 500 10 1 2 3 4 500 10 ϝϞϦ্ͷ ഑ྻ ssͷࢀরൣғ sͷࢀরൣғ 1 2 500 10 1 2 500 10 20 0 ϝϞϦ্ͷ ഑ྻ 0 0 20 ss = append(ss, 20) ΩϟύγςΟΛ௒͑ͯ ཁૉ͕௥Ճ͞ΕΔͱɺ ৽ͨͳϝϞϦ্ͷ഑ྻΛ࡞Γɺ ͦΕΛࢀর͢ΔΑ͏ͳΔɻ

Slide 22

Slide 22 text

1 sͷग़ྗ஋ ssͷग़ྗ஋ ௕͞ɿ5 ΩϟύγςΟ: 8 2 3 4 500 10 1 2 3 4 500 10 ϝϞϦ্ͷ ഑ྻ sͷࢀরൣғ 1 2 500 10 ࢀর͍ͯ͠ΔϝϞϦͷ഑ྻ͕ ssͱҟͳΔͷͰɺ sͷ஋͸มΘΒͳ͍ɻ ΩϟύγςΟΛ௒͑Δͱ ࢀর͢ΔϝϞϦ͸2ഒʹͳΔɻ (ΩϟύγςΟ͸4 → 8ʹͳΔ) ssͷࢀরൣғ 1 2 500 10 20 0 ϝϞϦ্ͷ ഑ྻ 0 0 20 ss = append(ss, 20)

Slide 23

Slide 23 text

௕͞ɿ5 ΩϟύγςΟ: 8 1 sͷग़ྗ஋ ssͷग़ྗ஋ 2 3 4 500 10 1 2 3 4 500 10 ϝϞϦ্ͷ ഑ྻ sͷࢀরൣғ 1 2 50000 10 ࢀর͍ͯ͠ΔϝϞϦͷ഑ྻ͕ ssͱҟͳΔͷͰɺ sͷ஋͸มΘΒͳ͍ɻ ssͷࢀরൣғ 1 2 50000 10 20 0 ϝϞϦ্ͷ ഑ྻ 0 0 20 ss͕ࢀর͍ͯ͠Δ ϝϞϦ্ͷ഑ྻ͕มߋ͞ΕΔɻ ss[2] = 50000

Slide 24

Slide 24 text

εϥΠεΛίϐʔ͢Δͱ͖ʹ ΩϟύγςΟΛߟྀ͢Δͷ͸ਏΊ

Slide 25

Slide 25 text

εϥΠεΛίϐʔ͍ͨ͠ͱ͖͸ makeؔ਺ͱcopyؔ਺Λ࢖͓͏

Slide 26

Slide 26 text

s:[1 2 3 4 5 6] s1:[1000 4 5] // スライスsを定義 s := []int{1, 2, 3, 4, 5, 6} fmt.Printf("s:%d\n", s) // 長さ3、キャパシティ6のスライスssを定義 ss := make([]int, 3, 6) // copy組み込み関数を使って、sの値をssにコピー c := copy(ss, s[2:5]) fmt.Printf("ss:%d\n", ss) fmt.Printf("コピーした要素の数:%d\n\n", c) // ssの値を変更 fmt.Println("--ssの値を変更--") ss[0] = 1000 fmt.Printf("s:%d\n", s) fmt.Printf("ss:%d\n", ss) make関数を使って ssが参照するメモリ上の配列を 作成する。 copy関数を使ってsの値をssに コピーする。 https://play.golang.org/p/64yyeb0NJBp

Slide 27

Slide 27 text

ͨͩ͠copyؔ਺͸ εϥΠεͷ௕͞ͷ෼͔͠ίϐʔͰ͖ͳ͍ͷͰ஫ҙ

Slide 28

Slide 28 text

make関数を使って 長さ1のスライスs1を作成する。 s1:[3] コピーした要素の数:1 // スライスsを定義 s := []int{1, 2, 3, 4, 5, 6} fmt.Printf("s:%d\n", s) // 長さ1、キャパシティ6のスライスssを定義 ss := make([]int, 1, 6) // copy組み込み関数を使って、sの値をssにコピー c := copy(ss, s[2:5]) fmt.Printf("ss:%d\n", ss) fmt.Printf("コピーした要素の数:%d\n", c) copy関数を使ってsの値をコピーする https://play.golang.org/p/_xZ2bqqSw5Y

Slide 29

Slide 29 text

εϥΠεͷίϐʔ͸ όάΛੜΈग़͠΍͍͢ͷͰ ࢖Θͳ͍ํ͕͍͍

Slide 30

Slide 30 text

The Go Blog ɾhttps://blog.golang.org/go-slices-usage-and-internals ɾhttps://blog.golang.org/slices εϥΠεͷهࣄ ɾhttps://www.techscore.com/tech/Go/Lang/Basic14/ ɾhttps://www.techscore.com/tech/Go/Lang/Basic15/

Slide 31

Slide 31 text

EOL