Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Golang Beginners!
Search
yukpiz
October 23, 2018
Technology
120
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Golang Beginners!
Okinawa.go #10の資料です!
yukpiz
October 23, 2018
More Decks by yukpiz
See All by yukpiz
Go x AWSによるシンプルなサーバーレス実装
yukpiz
1
590
Go x AWSによるシンプルなサーバーレス実装
yukpiz
1
120
Go言語と事例で学ぶAWS Lambda
yukpiz
3
1.1k
Other Decks in Technology
See All in Technology
穢れた技術選定について
watany
19
6.2k
複数プロダクト組織のAIネイティブ化における戦略 / AICon2026_kude
rakus_dev
0
310
「休む」重要さ
smt7174
6
1.7k
「守りたい体験」を渡すだけで E2E を生成させられるようになった話
hinac0
2
1.1k
複数プロダクトで進めるAI機能実装 ── 実践から得たリアルな学びとロードマップ実現への挑戦 / AICon2026_yanari
rakus_dev
1
280
Power Automateアップデート情報
miyakemito
0
160
AI時代のYAGNI:「爆速で無駄になった機能」からの学び / 20260720 Naoki Takahashi
shift_evolve
PRO
3
540
Vポイント分析基盤におけるデータモデリング20年史
taromatsui_cccmkhd
4
750
どこまでAIに任せるか 〜確率論と決定論の境界決定〜
shukob
0
500
大 AI 時代におけるC# の事情 ~ぶっちゃけトークを交えながら~
nenonaninu
1
170
インシデント事例と パッケージの全量解析に学ぶ ソフトウェアサプライチェーンの守り方 / supply-chain-attack-defense
flatt_security
0
970
kaonavi Tech Night#1
kaonavi
0
160
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
420
Context Engineering - Making Every Token Count
addyosmani
9
1k
Exploring anti-patterns in Rails
aemeredith
3
450
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
200
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Unsuck your backbone
ammeep
672
58k
The SEO identity crisis: Don't let AI make you average
varn
0
520
Measuring & Analyzing Core Web Vitals
bluesmoon
9
910
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
280
Transcript
Golang Beginners! Written by @yukpiz Oct 4, 2018 Lightning talks
party night! at Okinawa! Oct 23, 2018 Okinawa.go #10
Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\
Variables //\\\\\\\\\\ Array & Slice //\\\\\\\\\\\ Pointer //\\\\\\\\\\\\ Closing
Tadaima 沖縄Go言語LT大会
Tadaima //\ 東京のスタートアップでGo言語 //\\\ Twitter @yukpiz(https://yukpiz.github.io) //\\\\\ #golang #AWS #Vim
#Fishing //\\\\\\\ エンジニアの登壇を応援する会 //\\\\\\\ GoCon 2018のCfPを考え中 //\\\\\\\\\ せっかくなので沖縄でイベント開催してみよう!
Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\
Variables //\\\\\\\\\\ Array & Slice //\\\\\\\\\\\ Pointer //\\\\\\\\\\\\ Closing
What’s golang? mainパッケージだとコマンドライン実行可能 標準で言語に含まれるパッケージでも、 利用するときはimportする mainパッケージの場合、 実行時にmain関数が呼び出される
What’s golang? //\ 2012年にリリース(現在v1.11、go2のドラフト発表) //\\\ コマンドラインツール、WebAPI、バッチ処理 //\\\\\ AWS Lambda、GAE/Go、Cloud Function(Coming
soon!) //\\\\\\\ 静的型付け言語、並列実行に強い、シンプルな構文 //\\\\\\\\\ クローラー、メッセージ一斉配信、WebAPI
Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\
Variables //\\\\\\\\\\ Array & Slice //\\\\\\\\\\\ Pointer //\\\\\\\\\\\\ Closing
Let’s hands-on! //\ 9月に東京で初心者向けのハンズオンをやった //\\\ 言語仕様から頑張って勉強した //\\\\\ 言語仕様、わかってるつもりだったけど難しかった //\\\\\\\ 以下にハンズオン内容が公開されています!
スライド:https://techdo.connpass.com/event/100306/ 課題内容:https://qiita.com/yukpiz/items/384093ce65c56451bd97
Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\
Variables //\\\\\\\\\\ Array & Slice(WARN) //\\\\\\\\\\\ Pointer(DANGER) //\\\\\\\\\\\\ Closing
Variables 1st //\ 基本的な変数の扱いを学ぶ //\\\ 知っておくと得する、変数についての豆知識を学ぶ
Variables 2nd 変数が宣言されると、ゼロ値で初期化される 宣言と初期化を明示的に行なえる :=でvarを省略できる 宣言済みの変数には代入ができる 未宣言の変数に代入はできない 再宣言はできない
Variables 3rd ここに入ると変数pはメモリ上に 確保されるが、使用されない 使用する直前で宣言しよう
Variables 4th //\ 宣言と代入の違いを理解しよう //\\\ 未使用変数を残して、コンパイルできない //\\\\\ 変数は宣言された位置でメモリが確保される //\\\\\\\ 変数宣言は使用する直前に書くように心がける
Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\
Variables //\\\\\\\\\\ Array & Slice(WARN) //\\\\\\\\\\\ Pointer(DANGER) //\\\\\\\\\\\\ Closing
Array & Slice 1st //\ 基本的な配列とスライスの使い方を学ぶ //\\\ 配列とスライスの違いを理解する
Array & Slice 2nd 容量3のint型の配列 容量5のint型の配列 容量が違う配列は、 異なる型として扱われる 変数の種別は同じ配列
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
Array & Slice 4th 容量を省略するとスライスになる スライスは可変長のように扱える 再スライスができる [0] 1 [1]
2 容量2のint配列(実体) [0] 1 [1] 2 [2] 3 [3] 4 容量4のint配列(実体) - 実体の配列に要素を2つ追加したい - 実体の配列は容量2なので足りない - 新しい配列が生成される - 新しい配列へのスライスが返される
Array & Slice 1st //\ 配列は固定長、スライスは可変長(のように振る舞う) //\\\ 配列は実体、スライスは配列の参照 //\\\\\ 暗黙的に配列の実体が再生成される場合がある
Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\
Variables //\\\\\\\\\\ Array & Slice(WARN) //\\\\\\\\\\\ Pointer(DANGER) //\\\\\\\\\\\\ Closing
Pointer 1st //\ 基本的なポインタの扱いを学ぶ //\\\ パフォーマンスを意識したコードを書けるようになる
Pointer 2st Profile構造体のポインタ変数を宣言、初期化 ポインタ変数はメモリ番地を出力できる ”&”がついているのはポインタ変数 ”*”をつけてアクセスすると値が得られる ポインタ変数でもフィールドにアクセス可能
Pointer 3rd f1にポインタ変数を渡す f2に値を渡す Profile構造体のポインタ変数を 引数に取る関数 Profile構造体の値を 引数に取る関数
Pointer 4th //\ 値コピーを避ける為にポインタを利用する //\\\ ポインタ変数であってもフィールドにアクセスができる //\\\\\ 特に値コピーによる関数の引数でポインタを使う
Summaries!
You have a fun golang life! //\ APIやバッチ処理での活用事例が増えている言語 //\\\ パッケージ管理が標準導入されたり(v1.12)
//\\\\\ go2のドラフトデザインが発表されたり //\\\\\\\ Go言語の書けるエンジニア少ない
Agenda //\\\\\\ Tadaima //\\\\\\\ What’s golang? //\\\\\\\\ Let’s hands-on! //\\\\\\\\\
Variables //\\\\\\\\\\ Array & Slice //\\\\\\\\\\\ Pointer //\\\\\\\\\\\\ Closing
Closing? No!! Please join us! for After-Party:)
@yukpiz リピーターに長く愛される そんなお店づくりを支援したい * Marketing Support * Concierge Support *
Opening Support for Restaurants !! yukpiz We are hiring!
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