SlideShare a Scribd company logo
Goを知る
Let it Go
Goって
Google App Engine
でしか
動かないんだよね?
Google App Engine
専用の
言語じゃないぞ
Goって
マイナーだから
使う人に
ランタイム
いれてもらうの
大変では。。。?
Goは実行可能バイナリを作る
$ go build main.go
$ ./main
Hello Go world!
$
Goに対する
誤った認識を
取り除いたとこで。。
Goの
「ヤバい」
と思うポイントを
紹介してみます(※)
※ fkm個人の感想です
問題なければスタックを使う
Moke型のオブジェクトを生成し返す関数
func NewMoke() Moke {
// Mokeを生成しreturn
}
問題なければスタックを使う
一見、ヒープにオブジェクトを生成してから
返しているように見えるが。。。
func NewMoke() Moke {
o := &Moke{}
return *o
}
問題なければスタックを使う
ポインタとして使ってないので、
関数内で生成するオブジェクトは
スタックに置かれる
→GC不要なオブジェクトに!
$ go build --gcflags -m main.go
中略
./main.go:16: NewMoke &Moke literal does not
escape
Goroutine
非同期処理簡単
func moke() {
go func() {
// 非同期でやりたい処理
}()
}
Goroutineはスレッドじゃない
● スレッド
○ タイマーで切り替わる
○ 切り換え時にレジスタの内容などを退避
■ レジスタの本数って。。。
● Goroutine
○ スケジュールで切り替わる
○ 退避する内容がかなり少ない
■ PC/スタックポインタ/DXの3つ
レジスタが空くタイミングは
分かる
Goソース
func main() {
// 処理1
// 処理2
// 処理3
}
アセンブリ
// 処理1-1
// 処理1-2
// 処理2-1
// 処理2-2
(この時点でレジスタは
空くぞ。。。!)
// 処理3-1
...
コンパイル周りが
割と
ガチなのです
参考資料
http://najeira.blogspot.jp/2013/10/go.
html
http://blog.nindalf.com/how-
goroutines-work/
Gopherイラスト
https://github.com/tenntenn/gopher-
stickers

More Related Content

Viewers also liked

Go+revel
Go+revelGo+revel
Go+revel
Amuro Nishizawa
 
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
Hidenori Takeshita
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
deris0126
 
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるMasakazu Muraoka
 
Go言語と過ごした一週間
Go言語と過ごした一週間Go言語と過ごした一週間
Go言語と過ごした一週間
Shintaro Kitayama
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
matsuo kenji
 
HighBatch
HighBatchHighBatch
HighBatch
Nobuhito Sato
 
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #gocon
Hideyuki TAKEI
 
alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets heroku
Kyosuke Kameda
 
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために
Akihiko Horiuchi
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみた
Ken Gotoh
 
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会Satoshi Noda
 
Dockerぐらし!
Dockerぐらし!Dockerぐらし!
Dockerぐらし!
Takumi Murano
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語について
sz yudppp
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
Innami Satoshi
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28
Ato ARAKI
 
ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語
Satoshi Noda
 
エンジニアと椅子
エンジニアと椅子エンジニアと椅子
エンジニアと椅子
m1sogi
 

Viewers also liked (20)

Go+revel
Go+revelGo+revel
Go+revel
 
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
cli.go と cli-init で高速にコマンドラインツールを開発する / The command-line tool developed at hi...
 
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
Introduction to Vim plugins developed by non-Japanese Vimmer (Japanese version)
 
Chrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみるChrome osとgo言語からgoogleの今後を妄想してみる
Chrome osとgo言語からgoogleの今後を妄想してみる
 
Go言語と過ごした一週間
Go言語と過ごした一週間Go言語と過ごした一週間
Go言語と過ごした一週間
 
Github第8章
Github第8章Github第8章
Github第8章
 
Eureka go 2015_12_12
Eureka go 2015_12_12Eureka go 2015_12_12
Eureka go 2015_12_12
 
HighBatch
HighBatchHighBatch
HighBatch
 
Golang, make and robotics #gocon
Golang, make and robotics #goconGolang, make and robotics #gocon
Golang, make and robotics #gocon
 
alphawing meets heroku
alphawing meets herokualphawing meets heroku
alphawing meets heroku
 
らくちん Go言語
らくちん Go言語らくちん Go言語
らくちん Go言語
 
勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために勉強会への一歩を踏み出すために
勉強会への一歩を踏み出すために
 
ISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみたISUCON2015 PHPで予選を戦ってみた
ISUCON2015 PHPで予選を戦ってみた
 
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
2015/02/21 GDG神戸 Go on Android ハンズオン&もくもく会
 
Dockerぐらし!
Dockerぐらし!Dockerぐらし!
Dockerぐらし!
 
マイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語についてマイクロサービスにおけるクエリー言語について
マイクロサービスにおけるクエリー言語について
 
Gunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http urlGunosy Go lang study #6 net http url
Gunosy Go lang study #6 net http url
 
Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28Jenkins study 7 2013-01-28
Jenkins study 7 2013-01-28
 
ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語ちょっとだけさわってみる Go言語
ちょっとだけさわってみる Go言語
 
エンジニアと椅子
エンジニアと椅子エンジニアと椅子
エンジニアと椅子
 

Similar to Goを知る

ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発 ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発
schoowebcampus
 
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろうGoだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
Takuya Ueda
 
2010/8/27 TechEd2010 ライトニングトーク
2010/8/27 TechEd2010 ライトニングトーク2010/8/27 TechEd2010 ライトニングトーク
2010/8/27 TechEd2010 ライトニングトーク
Sunao Tomita
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Naoki Iwami
 
Goはじめました
GoはじめましたGoはじめました
Goはじめました
Masanori Masui
 
スッとGoを取り入れる
スッとGoを取り入れるスッとGoを取り入れる
スッとGoを取り入れる
Yusuke Wada
 

Similar to Goを知る (6)

ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発 ブラウザだけで学ぶWebアプリ開発
ブラウザだけで学ぶWebアプリ開発
 
Goだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろうGoだけでモバイルアプリを作ろう
Goだけでモバイルアプリを作ろう
 
2010/8/27 TechEd2010 ライトニングトーク
2010/8/27 TechEd2010 ライトニングトーク2010/8/27 TechEd2010 ライトニングトーク
2010/8/27 TechEd2010 ライトニングトーク
 
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップWebアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
Webアプリのシナリオテスト自動化を運用に乗せるまでの10のステップ
 
Goはじめました
GoはじめましたGoはじめました
Goはじめました
 
スッとGoを取り入れる
スッとGoを取り入れるスッとGoを取り入れる
スッとGoを取り入れる
 

More from Hirokazu Fukami

Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Hirokazu Fukami
 
Fragmentを使って「アプリ」を作る2
Fragmentを使って「アプリ」を作る2Fragmentを使って「アプリ」を作る2
Fragmentを使って「アプリ」を作る2
Hirokazu Fukami
 
[Android]Static変数さんとactivityさん
[Android]Static変数さんとactivityさん[Android]Static変数さんとactivityさん
[Android]Static変数さんとactivityさん
Hirokazu Fukami
 
Unity + MBaaS
Unity + MBaaSUnity + MBaaS
Unity + MBaaS
Hirokazu Fukami
 
5分でクラウド対応メモ帳アプリを作る(PotatoTips#2 LT)
5分でクラウド対応メモ帳アプリを作る(PotatoTips#2 LT)5分でクラウド対応メモ帳アプリを作る(PotatoTips#2 LT)
5分でクラウド対応メモ帳アプリを作る(PotatoTips#2 LT)
Hirokazu Fukami
 
Kii cloud 勉強会 #2
Kii cloud 勉強会 #2Kii cloud 勉強会 #2
Kii cloud 勉強会 #2
Hirokazu Fukami
 
Git level1
Git level1Git level1
Git level1
Hirokazu Fukami
 
プログラミング勉強会 その0
プログラミング勉強会 その0プログラミング勉強会 その0
プログラミング勉強会 その0Hirokazu Fukami
 

More from Hirokazu Fukami (8)

Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
 
Fragmentを使って「アプリ」を作る2
Fragmentを使って「アプリ」を作る2Fragmentを使って「アプリ」を作る2
Fragmentを使って「アプリ」を作る2
 
[Android]Static変数さんとactivityさん
[Android]Static変数さんとactivityさん[Android]Static変数さんとactivityさん
[Android]Static変数さんとactivityさん
 
Unity + MBaaS
Unity + MBaaSUnity + MBaaS
Unity + MBaaS
 
5分でクラウド対応メモ帳アプリを作る(PotatoTips#2 LT)
5分でクラウド対応メモ帳アプリを作る(PotatoTips#2 LT)5分でクラウド対応メモ帳アプリを作る(PotatoTips#2 LT)
5分でクラウド対応メモ帳アプリを作る(PotatoTips#2 LT)
 
Kii cloud 勉強会 #2
Kii cloud 勉強会 #2Kii cloud 勉強会 #2
Kii cloud 勉強会 #2
 
Git level1
Git level1Git level1
Git level1
 
プログラミング勉強会 その0
プログラミング勉強会 その0プログラミング勉強会 その0
プログラミング勉強会 その0
 

Goを知る