Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Go
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
masaki.kinoshita
August 12, 2020
570
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Go
masaki.kinoshita
August 12, 2020
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
420
Are puppies a ranking factor?
jonoalderson
2
3.9k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
520
Side Projects
sachag
456
43k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
What does AI have to do with Human Rights?
axbom
PRO
1
2.4k
Typedesign – Prime Four
hannesfritz
42
3.2k
We Are The Robots
honzajavorek
0
370
Into the Great Unknown - MozCon
thekraken
41
2.7k
Transcript
Go言語ってどんな感じ?
言語とは 読みやすい無駄のないシンプルなコードで記述を 行い、並列処理を得意としておりCPUへの負荷が 少なく軽量であること、そして高速コンパイルによ る実行速度が速い - 2009年Googleが公開したプログラミング言語 - 特徴「軽量・高速・シンプル」 -
さらに詳しく特徴↓↓↓
因みにこの子の名前は「Gopher(ごーふぁー)」といいます Gopherを日本語でホリネズミ
None
None
Go言語が影響を受けている言語 - C言語 - Pascal - Modula - Oberonファミリー -
Newsqueak - Limbo - Python など
2019年 2020年 世界100カ国 71281人 世界162カ国 116648人 エンジニアが学びたい言語ランキング <米HackerRank社より>
言語のシェアランキングは??? 信頼できるページあります http://pypl.github.io/PYPL.html
Go言語のメリット - 静的コード分析 - コードを実行せずに行なう検証 - 組み込みテストおよびプロファイリングフレームワーク - テスト駆動開発
- UNIXのパイプライクチャネルの概念に基づく軽量のマシンコード言語 - こんな感じ seq(10) | fizzbuzz | stdout - 高速コンパイル機能 - Go言語から機械語に直接コンパイルする - Generics、継承、例外処理、while文やdo-whileがない - 安全性が高いシンプルな構造を保つ。 - 初心者でも理解しやすい、コード編集が用意、コードエラーが容易に理解できる
- 継承がない - classがない。拡張し辛い。java、scala脳だとハマる - シンプルな構造にするため - genericsがない - メソッドの引数に特定の型を決め打ちしないといけない→型クラスが使えない
- 同じような処理をつくるのにわざわざ、型の異なったものを作ったりする必要がある - セキュアなメモリ管理を達成するために切り捨てられた機能 - ソースファイルに名前空間がない - scalaみたいにファイル単位でimportしてメソッドを使ったりできない - package単位でimportする - 同じpackage内に同じメソッド名は作れない - 標準関数が貧弱 - JavaでいうLinkedHashMapのように順番を保証したmapを作れない - 大体自作かパッケージを探すことが多い Go言語のデメリット
Go言語のまめちしき - Go言語設計者の3人は共通してC++が好きじゃない - Go言語、Golangではなく正しくはGo - go.orgのドメインが欲しかったが当時先約がいたらしい (今は空いてるhttps://go.org/) - なのでgolang.orgを取得した
- ちなみにhttp://go.com/
Go言語書いて実行して遊んでみました
Go言語動かしてみた一覧 - hello world - 並行処理 - goroutine(ゴルーチン) - channel
- その他 - select - 例外 - testing
hello worldと実行確認 https://play.golang.org/p/E0G6CLUF8cx
goroutine - goroutineは軽量スレッドでGoステートメントで関数を指定することで並行実行される - 並列ではなく並行処理です - goroutineを使わない - 6秒かかるコード -
https://play.golang.org/p/sYdSexXloBs - goroutineを使う - 3秒にするコード - https://play.golang.org/p/AwvbPW5cvsA
channel - channelはgoroutineで並行実行してる中で値を受信待ちをしてくれる - 非同期処理が帰ってくるまで待ってくれる - channelを使ってみる - 基本 -
https://play.golang.org/p/G7hhkkPAl39 - goroutineで使う - https://play.golang.org/p/7Ys1_uRHOmT
select - selectはswitch文と同じ - https://play.golang.org/p/pODGsdGxAwT
例外処理 - errors.New - throw e的なやつ - https://play.golang.org/p/L9AfvW1UOMu - fmt.errorf
- Scalaでいうf補完子 - https://play.golang.org/p/4FDlKp_0tPk - 複数のエラーハンドリング - https://play.golang.org/p/eLSp9qYrqyy
testing - テストコードです - https://play.golang.org/p/aM67XOsGs-Z - テスト成功 - テスト失敗 $
go test -v === RUN TestHello --- PASS: TestHello (0.00s) hello_test.go:15: TestHello終了 PASS ok _/C_/workspace/tech_do/hello 0.061s $ go test --- FAIL: TestHello (0.00s) hello_test.go:12: 実際: こんにちは、筋肉くん! 理想: こんにちは、鈴木くん! ! hello_test.go:15: TestHello終了 FAIL exit status 1 FAIL _/C_/workspace/tech_do/hello 0.042s
FIN