Slide 1

Slide 1 text

Golang Beginners! Written by @yukpiz Oct 4, 2018 Lightning talks party night! at Okinawa! Oct 23, 2018 Okinawa.go #10

Slide 2

Slide 2 text

Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\ Variables //\\\\\\\\\\ Array & Slice //\\\\\\\\\\\ Pointer //\\\\\\\\\\\\ Closing

Slide 3

Slide 3 text

Tadaima 沖縄Go言語LT大会

Slide 4

Slide 4 text

Tadaima //\ 東京のスタートアップでGo言語 //\\\ Twitter @yukpiz(https://yukpiz.github.io) //\\\\\ #golang #AWS #Vim #Fishing //\\\\\\\ エンジニアの登壇を応援する会 //\\\\\\\ GoCon 2018のCfPを考え中 //\\\\\\\\\ せっかくなので沖縄でイベント開催してみよう!

Slide 5

Slide 5 text

Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\ Variables //\\\\\\\\\\ Array & Slice //\\\\\\\\\\\ Pointer //\\\\\\\\\\\\ Closing

Slide 6

Slide 6 text

What’s golang? mainパッケージだとコマンドライン実行可能 標準で言語に含まれるパッケージでも、 利用するときはimportする mainパッケージの場合、 実行時にmain関数が呼び出される

Slide 7

Slide 7 text

What’s golang? //\ 2012年にリリース(現在v1.11、go2のドラフト発表) //\\\ コマンドラインツール、WebAPI、バッチ処理 //\\\\\ AWS Lambda、GAE/Go、Cloud Function(Coming soon!) //\\\\\\\ 静的型付け言語、並列実行に強い、シンプルな構文 //\\\\\\\\\ クローラー、メッセージ一斉配信、WebAPI

Slide 8

Slide 8 text

Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\ Variables //\\\\\\\\\\ Array & Slice //\\\\\\\\\\\ Pointer //\\\\\\\\\\\\ Closing

Slide 9

Slide 9 text

Let’s hands-on! //\ 9月に東京で初心者向けのハンズオンをやった //\\\ 言語仕様から頑張って勉強した //\\\\\ 言語仕様、わかってるつもりだったけど難しかった //\\\\\\\ 以下にハンズオン内容が公開されています! スライド:https://techdo.connpass.com/event/100306/ 課題内容:https://qiita.com/yukpiz/items/384093ce65c56451bd97

Slide 10

Slide 10 text

Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\ Variables //\\\\\\\\\\ Array & Slice(WARN) //\\\\\\\\\\\ Pointer(DANGER) //\\\\\\\\\\\\ Closing

Slide 11

Slide 11 text

Variables 1st //\ 基本的な変数の扱いを学ぶ //\\\ 知っておくと得する、変数についての豆知識を学ぶ

Slide 12

Slide 12 text

Variables 2nd 変数が宣言されると、ゼロ値で初期化される 宣言と初期化を明示的に行なえる :=でvarを省略できる 宣言済みの変数には代入ができる 未宣言の変数に代入はできない 再宣言はできない

Slide 13

Slide 13 text

Variables 3rd ここに入ると変数pはメモリ上に 確保されるが、使用されない 使用する直前で宣言しよう

Slide 14

Slide 14 text

Variables 4th //\ 宣言と代入の違いを理解しよう //\\\ 未使用変数を残して、コンパイルできない //\\\\\ 変数は宣言された位置でメモリが確保される //\\\\\\\ 変数宣言は使用する直前に書くように心がける

Slide 15

Slide 15 text

Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\ Variables //\\\\\\\\\\ Array & Slice(WARN) //\\\\\\\\\\\ Pointer(DANGER) //\\\\\\\\\\\\ Closing

Slide 16

Slide 16 text

Array & Slice 1st //\ 基本的な配列とスライスの使い方を学ぶ //\\\ 配列とスライスの違いを理解する

Slide 17

Slide 17 text

Array & Slice 2nd 容量3のint型の配列 容量5のint型の配列 容量が違う配列は、 異なる型として扱われる 変数の種別は同じ配列

Slide 18

Slide 18 text

Array & Slice 3rd [0] 1 [1] 2 [2] 3 [3] 4 [4] 5 [5] 6 [6] 7 [7] 8 [8] 9 [9] 10 容量10のint配列(実体) 要素1~5番目までを 参照するスライス 実体の配列が変更される Length(長さ)はスライスの長さ5 Capacity(容量)は実体配列の容量10

Slide 19

Slide 19 text

Array & Slice 4th 容量を省略するとスライスになる スライスは可変長のように扱える 再スライスができる [0] 1 [1] 2 容量2のint配列(実体) [0] 1 [1] 2 [2] 3 [3] 4 容量4のint配列(実体) - 実体の配列に要素を2つ追加したい - 実体の配列は容量2なので足りない - 新しい配列が生成される - 新しい配列へのスライスが返される

Slide 20

Slide 20 text

Array & Slice 1st //\ 配列は固定長、スライスは可変長(のように振る舞う) //\\\ 配列は実体、スライスは配列の参照 //\\\\\ 暗黙的に配列の実体が再生成される場合がある

Slide 21

Slide 21 text

Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\ Variables //\\\\\\\\\\ Array & Slice(WARN) //\\\\\\\\\\\ Pointer(DANGER) //\\\\\\\\\\\\ Closing

Slide 22

Slide 22 text

Pointer 1st //\ 基本的なポインタの扱いを学ぶ //\\\ パフォーマンスを意識したコードを書けるようになる

Slide 23

Slide 23 text

Pointer 2st Profile構造体のポインタ変数を宣言、初期化 ポインタ変数はメモリ番地を出力できる ”&”がついているのはポインタ変数 ”*”をつけてアクセスすると値が得られる ポインタ変数でもフィールドにアクセス可能

Slide 24

Slide 24 text

Pointer 3rd f1にポインタ変数を渡す f2に値を渡す Profile構造体のポインタ変数を 引数に取る関数 Profile構造体の値を 引数に取る関数

Slide 25

Slide 25 text

Pointer 4th //\ 値コピーを避ける為にポインタを利用する //\\\ ポインタ変数であってもフィールドにアクセスができる //\\\\\ 特に値コピーによる関数の引数でポインタを使う

Slide 26

Slide 26 text

Summaries!

Slide 27

Slide 27 text

You have a fun golang life! //\ APIやバッチ処理での活用事例が増えている言語 //\\\ パッケージ管理が標準導入されたり(v1.12) //\\\\\ go2のドラフトデザインが発表されたり //\\\\\\\ Go言語の書けるエンジニア少ない

Slide 28

Slide 28 text

Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\ Variables //\\\\\\\\\\ Array & Slice //\\\\\\\\\\\ Pointer //\\\\\\\\\\\\ Closing

Slide 29

Slide 29 text

Closing? No!! Please join us! for After-Party:)

Slide 30

Slide 30 text

@yukpiz リピーターに長く愛される そんなお店づくりを支援したい * Marketing Support * Concierge Support * Opening Support for Restaurants !! yukpiz We are hiring!

Slide 31

Slide 31 text

Thanks! func thanks() { fmt.Println(“Thank you for join & listening ”) os.Exit(0) } Special Thanks! The Go gopher was designed by Renée French. Free gophers: https://github.com/egonelbre/gophers