Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Golang Beginners!

yukpiz
October 23, 2018

Golang Beginners!

Okinawa.go #10の資料です!

yukpiz

October 23, 2018
Tweet

More Decks by yukpiz

Other Decks in Technology

Transcript

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

    View Slide

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

    View Slide

  3. Tadaima
    沖縄Go言語LT大会

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  18. 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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  26. Summaries!

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  31. 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

    View Slide