狠狠撸

狠狠撸Share a Scribd company logo
(C) ?ピコもん. ?All ?Rights ?Reserved.
Go ??入?門 ?
(C) ?ピコもん. ?All ?Rights ?Reserved. 2
Go ??入?門
自己紹介
北澤です
(C) ?ピコもん. ?All ?Rights ?Reserved. 3
Go ??入?門
Goって?
「Go」は2009年11月10日(米国時間)にGoogleが発表したオープンソースの
プログラミング言語です。
Go言語は、Linux、Mac、Native Clientで動作する開発言語で、Android
携帯上でも動作します。
日本語:http://golang.jp/
公式サイト
英語:https://golang.org/
(C) ?ピコもん. ?All ?Rights ?Reserved. 4
Go ??入?門
Go言語の特徴
?シンプル!
?コンパイル速度、実行速度が早い!
?安全性が高い!
?並列?同期処理が簡単!
?オープンソース!
?楽しい!
(C) ?ピコもん. ?All ?Rights ?Reserved. 5
Go ??入?門
Go言語もうちょっと詳しく
?軽量言語並の開発速度
?コーディング規約がかなり決められている
?ウェブサービス作れる
?WAFいろいろ出てる
?ゴルーチンとチャネル
?ほぼオート型指定
?関数の戻り値が複数指定出来る
?配列とスライス
?エラーハンドリングが遅延実行関数で楽ちん
(C) ?ピコもん. ?All ?Rights ?Reserved. 6
Go ??入?門
package main
import “fmt”
func main() {
fmt.Println(“はろーわーるど!”)
}
Goで「はろーわーるど」
(C) ?ピコもん. ?All ?Rights ?Reserved. 7
Go ??入?門
package main
import “fmt”
func main() {
fmt.Println(“はろーわーるど!”)
}
Goのお作法 パッケージの名前を宣言する
外部パッケージを呼び出すときはインポート
関数はfunc
実行ポイントはmainパッケージのmain関数
パブリック関数?変数は大文字スタート
(プライベート関数?変数は小文字スタート)
最後にセミコロンとかいらない
(C) ?ピコもん. ?All ?Rights ?Reserved. 8
Go ??入?門
var message string = “こんにちは”
message := “おはよう”
var count int // (ゼロ値が入る)
var max int = 100
Goの変数代入
固定の型指定や自動的な型予測が出来る
(C) ?ピコもん. ?All ?Rights ?Reserved. 9
Go ??入?門
// 配列
message := […]string{
“おはよう”,”こんにちは”,”さようなら”}
// スライス
messages := []string{
“おはよう”,”こんにちは”,”さようなら”}
Goの配列?スライス
配列は厳格な値?スライスは操作しやすい
どっちも参照渡し(ポインタ渡し)
(C) ?ピコもん. ?All ?Rights ?Reserved. 10
Go ??入?門
func printMsg(type int) bool {
switch type {
case 1:
fmt.Println(“おはよう”)
case 2:
fmt.Println(“こんばんは”)
default:
fmt.Println(“こんにちは”)
}
return true
}
Goの関数
引数と戻り値の型を指定する
(switchでbreakいらない)
(C) ?ピコもん. ?All ?Rights ?Reserved. 11
Go ??入?門
func getMsg(type int) (bool, string) {
msg := “”
err := false
switch type {
case 1:
msg = “こんにちは”
case 2:
msg = “こんばんは”
default:
msg = “さようなら”
err = true
}
return msg, err
}
Goの関数
複数の戻り値を指定できる
(C) ?ピコもん. ?All ?Rights ?Reserved. 12
Go ??入?門
func getMsg(type int) (err bool, msg string) {
switch type {
case 1:
msg = “こんにちは”
case 2:
msg = “こんばんは”
default:
msg = “さようなら”
err = true
}
return
}
Goの関数
戻り値を事前に定義できる
(C) ?ピコもん. ?All ?Rights ?Reserved. 13
Go ??入?門
$GOPATH
├── bin
├── pkg
└── src
Goのお作法
開発時のディレクトリ構造
ビルドファイルの出力場所
環境変数で指定
OS環境単位のファイルの自動出力場所
開発中のソース置き場
Githubで管理している場合のsrcの中
$GOPATH/src/github.com/<ユーザー名>/<リポジトリ名>
(C) ?ピコもん. ?All ?Rights ?Reserved. 14
Go ??入?門
go install ./main.go
go build ./main.go
Go実行方法
go test ./main.go
ビルド
テスト
go run ./main.go
デバッグ実行
go get github.com/go-sql-driver/mysql
欲しいパッケージがあったら
(C) ?ピコもん. ?All ?Rights ?Reserved. 15
Go ??入?門
type Human struct {}
type Male interface {}
他にもGo
構造体?インターフェース
defer hoge()
panic()
recover()
defer?パニック?リカバー
ゴルーチン?チャネル
go foo()
msg := <- ch
ch <- “ok”
(C) ?ピコもん. ?All ?Rights ?Reserved. 16
Go ??入?門
いっぱいあって
説明しきれない!
(C) ?ピコもん. ?All ?Rights ?Reserved. 17
Go ??入?門
「マイクロサービス」化のアーキテクチャ方針を行うのなら
「切り出し可能なサービス」単位で最適な開発言語やDBを
選ぶ必要が出てくる。
の流れは
マイクロサービス!
(C) ?ピコもん. ?All ?Rights ?Reserved. 18
Goやろぅ!
Go ??入?門
(C) ?ピコもん. ?All ?Rights ?Reserved. 19
ご静聴ありがとうございました。
Go ??入?門
Ad

More Related Content

What's hot (20)

骋辞による颈翱厂アフ?リの开発
骋辞による颈翱厂アフ?リの开発骋辞による颈翱厂アフ?リの开発
骋辞による颈翱厂アフ?リの开発
Takuya Ueda
?
骋辞一绪にいかか??
骋辞一绪にいかか??骋辞一绪にいかか??
骋辞一绪にいかか??
Ryuji Iwata
?
go.mobile で Android 開発
go.mobile で Android 開発go.mobile で Android 開発
go.mobile で Android 開発
Hiroshi Kurokawa
?
Go Mobileて?Androidアフ?リ開発
Go Mobileて?Androidアフ?リ開発Go Mobileて?Androidアフ?リ開発
Go Mobileて?Androidアフ?リ開発
Takuya Ueda
?
骋辞た?けて?モハ?イルアフ?リを作る
骋辞た?けて?モハ?イルアフ?リを作る骋辞た?けて?モハ?イルアフ?リを作る
骋辞た?けて?モハ?イルアフ?リを作る
Takuya Ueda
?
エテ?ィタの壁を越える骋辞の开発ツールの文化と作成法
エテ?ィタの壁を越える骋辞の开発ツールの文化と作成法エテ?ィタの壁を越える骋辞の开発ツールの文化と作成法
エテ?ィタの壁を越える骋辞の开発ツールの文化と作成法
Takuya Ueda
?
What is "Go" Gopher?
What is "Go" Gopher?What is "Go" Gopher?
What is "Go" Gopher?
Ryuji Iwata
?
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
a know
?
驳辞ハ?ッケーシ?て?型情报を用いたソースコート?検索を実现する
驳辞ハ?ッケーシ?て?型情报を用いたソースコート?検索を実现する驳辞ハ?ッケーシ?て?型情报を用いたソースコート?検索を実现する
驳辞ハ?ッケーシ?て?型情报を用いたソースコート?検索を実现する
Takuya Ueda
?
骋辞て?かんたんソースコート?の静的解析
骋辞て?かんたんソースコート?の静的解析骋辞て?かんたんソースコート?の静的解析
骋辞て?かんたんソースコート?の静的解析
Takuya Ueda
?
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake
?
骋辞言语で叠辞迟开発やってみた
骋辞言语で叠辞迟开発やってみた骋辞言语で叠辞迟开発やってみた
骋辞言语で叠辞迟开発やってみた
Akihiko Horiuchi
?
骋辞とテスト
骋辞とテスト骋辞とテスト
骋辞とテスト
Takuya Ueda
?
GAE/Goて?LINE Messaging API を使う
GAE/Goて?LINE Messaging API を使うGAE/Goて?LINE Messaging API を使う
GAE/Goて?LINE Messaging API を使う
Takuya Ueda
?
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Hirokazu Fukami
?
骋辞による奥别产アプリ开発のキホン
骋辞による奥别产アプリ开発のキホン骋辞による奥别产アプリ开発のキホン
骋辞による奥别产アプリ开発のキホン
Akihiko Horiuchi
?
メルカリアッテの実务て?使えた、骋础贰/骋辞の开発を効率的にする方法
メルカリアッテの実务て?使えた、骋础贰/骋辞の开発を効率的にする方法メルカリアッテの実务て?使えた、骋础贰/骋辞の开発を効率的にする方法
メルカリアッテの実务て?使えた、骋础贰/骋辞の开発を効率的にする方法
Takuya Ueda
?
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
Keisuke Yamaguchi
?
オススメの标準?準标準ハ?ッケーシ?20选
オススメの标準?準标準ハ?ッケーシ?20选オススメの标準?準标準ハ?ッケーシ?20选
オススメの标準?準标準ハ?ッケーシ?20选
Takuya Ueda
?
粗探しをして骋辞のコントリヒ?ューターになる方法
粗探しをして骋辞のコントリヒ?ューターになる方法粗探しをして骋辞のコントリヒ?ューターになる方法
粗探しをして骋辞のコントリヒ?ューターになる方法
Takuya Ueda
?
骋辞による颈翱厂アフ?リの开発
骋辞による颈翱厂アフ?リの开発骋辞による颈翱厂アフ?リの开発
骋辞による颈翱厂アフ?リの开発
Takuya Ueda
?
骋辞一绪にいかか??
骋辞一绪にいかか??骋辞一绪にいかか??
骋辞一绪にいかか??
Ryuji Iwata
?
Go Mobileて?Androidアフ?リ開発
Go Mobileて?Androidアフ?リ開発Go Mobileて?Androidアフ?リ開発
Go Mobileて?Androidアフ?リ開発
Takuya Ueda
?
骋辞た?けて?モハ?イルアフ?リを作る
骋辞た?けて?モハ?イルアフ?リを作る骋辞た?けて?モハ?イルアフ?リを作る
骋辞た?けて?モハ?イルアフ?リを作る
Takuya Ueda
?
エテ?ィタの壁を越える骋辞の开発ツールの文化と作成法
エテ?ィタの壁を越える骋辞の开発ツールの文化と作成法エテ?ィタの壁を越える骋辞の开発ツールの文化と作成法
エテ?ィタの壁を越える骋辞の开発ツールの文化と作成法
Takuya Ueda
?
What is "Go" Gopher?
What is "Go" Gopher?What is "Go" Gopher?
What is "Go" Gopher?
Ryuji Iwata
?
今日から始める Go言語 と appengine
今日から始める Go言語 と appengine今日から始める Go言語 と appengine
今日から始める Go言語 と appengine
a know
?
驳辞ハ?ッケーシ?て?型情报を用いたソースコート?検索を実现する
驳辞ハ?ッケーシ?て?型情报を用いたソースコート?検索を実现する驳辞ハ?ッケーシ?て?型情报を用いたソースコート?検索を実现する
驳辞ハ?ッケーシ?て?型情报を用いたソースコート?検索を実现する
Takuya Ueda
?
骋辞て?かんたんソースコート?の静的解析
骋辞て?かんたんソースコート?の静的解析骋辞て?かんたんソースコート?の静的解析
骋辞て?かんたんソースコート?の静的解析
Takuya Ueda
?
実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで実践Go ツールの作成から配布まで
実践Go ツールの作成から配布まで
Yusuke Miyake
?
骋辞言语で叠辞迟开発やってみた
骋辞言语で叠辞迟开発やってみた骋辞言语で叠辞迟开発やってみた
骋辞言语で叠辞迟开発やってみた
Akihiko Horiuchi
?
GAE/Goて?LINE Messaging API を使う
GAE/Goて?LINE Messaging API を使うGAE/Goて?LINE Messaging API を使う
GAE/Goて?LINE Messaging API を使う
Takuya Ueda
?
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 SummerGoのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Goのパッケージ構成で 試行錯誤してみた話 ~ Gocon 2015 Summer
Hirokazu Fukami
?
骋辞による奥别产アプリ开発のキホン
骋辞による奥别产アプリ开発のキホン骋辞による奥别产アプリ开発のキホン
骋辞による奥别产アプリ开発のキホン
Akihiko Horiuchi
?
メルカリアッテの実务て?使えた、骋础贰/骋辞の开発を効率的にする方法
メルカリアッテの実务て?使えた、骋础贰/骋辞の开発を効率的にする方法メルカリアッテの実务て?使えた、骋础贰/骋辞の开発を効率的にする方法
メルカリアッテの実务て?使えた、骋础贰/骋辞の开発を効率的にする方法
Takuya Ueda
?
ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法ネットワークの切り替えを感知する方法
ネットワークの切り替えを感知する方法
Keisuke Yamaguchi
?
オススメの标準?準标準ハ?ッケーシ?20选
オススメの标準?準标準ハ?ッケーシ?20选オススメの标準?準标準ハ?ッケーシ?20选
オススメの标準?準标準ハ?ッケーシ?20选
Takuya Ueda
?
粗探しをして骋辞のコントリヒ?ューターになる方法
粗探しをして骋辞のコントリヒ?ューターになる方法粗探しをして骋辞のコントリヒ?ューターになる方法
粗探しをして骋辞のコントリヒ?ューターになる方法
Takuya Ueda
?

Similar to 骋辞濒补苍驳入门 (20)

翱厂厂で楽に作る骋辞言语クライアントツール
翱厂厂で楽に作る骋辞言语クライアントツール翱厂厂で楽に作る骋辞言语クライアントツール
翱厂厂で楽に作る骋辞言语クライアントツール
Tano Makoto
?
2019-01冲正月叁が日で骋辞濒补苍驳を触ってみた
2019-01冲正月叁が日で骋辞濒补苍驳を触ってみた2019-01冲正月叁が日で骋辞濒补苍驳を触ってみた
2019-01冲正月叁が日で骋辞濒补苍驳を触ってみた
Igarashi Toru
?
社内勉強会1 go lang
社内勉強会1 go lang 社内勉強会1 go lang
社内勉強会1 go lang
Tsuyoshi Nakamura
?
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
骋辞言语ってどんな言语? 导入実绩や気になるトレンド骋辞言语ってどんな言语? 导入実绩や気になるトレンド
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
Atsushi Yasuda
?
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライドSIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
IGDA JAPAN
?
ライトニングノードをたててみよう
ライトニングノードをたててみようライトニングノードをたててみよう
ライトニングノードをたててみよう
takayaimai
?
Golang handson
Golang handsonGolang handson
Golang handson
Ryuto Yasugi
?
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみようテックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
yoshito funayose
?
骋辞言语による奥别产アプリケーション开発
骋辞言语による奥别产アプリケーション开発骋辞言语による奥别产アプリケーション开発
骋辞言语による奥别产アプリケーション开発
エンジニア勉強会 エスキュービズム
?
国际化対応における鲍滨実装で気をつけるべきこと
国际化対応における鲍滨実装で気をつけるべきこと国际化対応における鲍滨実装で気をつけるべきこと
国际化対応における鲍滨実装で気をつけるべきこと
KLab Inc. / Tech
?
贬别谤濒辞肠办サービス绍介
贬别谤濒辞肠办サービス绍介贬别谤濒辞肠办サービス绍介
贬别谤濒辞肠办サービス绍介
SONICMOOV CO.,LTD.
?
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
SENSY Inc
?
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみようテックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
yoshito funayose
?
The History of Groovy #GroovyBase
The History of Groovy #GroovyBaseThe History of Groovy #GroovyBase
The History of Groovy #GroovyBase
kyon mm
?
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and GomobileGo goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Takahiro Yoshimura
?
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
Kazuchika Sekiya
?
Goとtest coverage
Goとtest coverageGoとtest coverage
Goとtest coverage
nakaji-s
?
いまさら闻けない!贬罢惭尝5超入门
いまさら闻けない!贬罢惭尝5超入门いまさら闻けない!贬罢惭尝5超入门
いまさら闻けない!贬罢惭尝5超入门
Monaca
?
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTインフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
Daisuke Ikeda
?
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会2
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会2骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会2
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会2
Takuya Ueda
?
翱厂厂で楽に作る骋辞言语クライアントツール
翱厂厂で楽に作る骋辞言语クライアントツール翱厂厂で楽に作る骋辞言语クライアントツール
翱厂厂で楽に作る骋辞言语クライアントツール
Tano Makoto
?
2019-01冲正月叁が日で骋辞濒补苍驳を触ってみた
2019-01冲正月叁が日で骋辞濒补苍驳を触ってみた2019-01冲正月叁が日で骋辞濒补苍驳を触ってみた
2019-01冲正月叁が日で骋辞濒补苍驳を触ってみた
Igarashi Toru
?
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
骋辞言语ってどんな言语? 导入実绩や気になるトレンド骋辞言语ってどんな言语? 导入実绩や気になるトレンド
骋辞言语ってどんな言语? 导入実绩や気になるトレンド
Atsushi Yasuda
?
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライドSIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
SIG-Glocalization #13「アプリの海外展開、どうしていますか?」講演スライド
IGDA JAPAN
?
ライトニングノードをたててみよう
ライトニングノードをたててみようライトニングノードをたててみよう
ライトニングノードをたててみよう
takayaimai
?
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみようテックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
テックリンクGoハンズオン#2 APIアプリをGKEで動かしてみよう
yoshito funayose
?
国际化対応における鲍滨実装で気をつけるべきこと
国际化対応における鲍滨実装で気をつけるべきこと国际化対応における鲍滨実装で気をつけるべきこと
国际化対応における鲍滨実装で気をつけるべきこと
KLab Inc. / Tech
?
贬别谤濒辞肠办サービス绍介
贬别谤濒辞肠办サービス绍介贬别谤濒辞肠办サービス绍介
贬别谤濒辞肠办サービス绍介
SONICMOOV CO.,LTD.
?
DroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for AndroidDroidKaigi 2018 - Dialogflow for Android
DroidKaigi 2018 - Dialogflow for Android
SENSY Inc
?
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみようテックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
テックリンクGoハンズオン#3 APIアプリをGoogle Container Engine (GKE)で動かしてみよう
yoshito funayose
?
The History of Groovy #GroovyBase
The History of Groovy #GroovyBaseThe History of Groovy #GroovyBase
The History of Groovy #GroovyBase
kyon mm
?
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and GomobileGo goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Go goes Mobile: Quick Exploration on Go 1.5 and Gomobile
Takahiro Yoshimura
?
G* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - IntroductionG* Workshop in Fukuoka - Introduction
G* Workshop in Fukuoka - Introduction
Kazuchika Sekiya
?
Goとtest coverage
Goとtest coverageGoとtest coverage
Goとtest coverage
nakaji-s
?
いまさら闻けない!贬罢惭尝5超入门
いまさら闻けない!贬罢惭尝5超入门いまさら闻けない!贬罢惭尝5超入门
いまさら闻けない!贬罢惭尝5超入门
Monaca
?
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LTインフラ運用管理ツールとGolang OSS運用管理勉強会LT
インフラ運用管理ツールとGolang OSS運用管理勉強会LT
Daisuke Ikeda
?
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会2
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会2骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会2
骋辞谤辞耻迟颈苍别と肠丑补苍苍别濒から始める驳辞言语@初心者向け驳辞濒补苍驳勉强会2
Takuya Ueda
?
Ad

骋辞濒补苍驳入门

  • 1. (C) ?ピコもん. ?All ?Rights ?Reserved. Go ??入?門 ?
  • 2. (C) ?ピコもん. ?All ?Rights ?Reserved. 2 Go ??入?門 自己紹介 北澤です
  • 3. (C) ?ピコもん. ?All ?Rights ?Reserved. 3 Go ??入?門 Goって? 「Go」は2009年11月10日(米国時間)にGoogleが発表したオープンソースの プログラミング言語です。 Go言語は、Linux、Mac、Native Clientで動作する開発言語で、Android 携帯上でも動作します。 日本語:http://golang.jp/ 公式サイト 英語:https://golang.org/
  • 4. (C) ?ピコもん. ?All ?Rights ?Reserved. 4 Go ??入?門 Go言語の特徴 ?シンプル! ?コンパイル速度、実行速度が早い! ?安全性が高い! ?並列?同期処理が簡単! ?オープンソース! ?楽しい!
  • 5. (C) ?ピコもん. ?All ?Rights ?Reserved. 5 Go ??入?門 Go言語もうちょっと詳しく ?軽量言語並の開発速度 ?コーディング規約がかなり決められている ?ウェブサービス作れる ?WAFいろいろ出てる ?ゴルーチンとチャネル ?ほぼオート型指定 ?関数の戻り値が複数指定出来る ?配列とスライス ?エラーハンドリングが遅延実行関数で楽ちん
  • 6. (C) ?ピコもん. ?All ?Rights ?Reserved. 6 Go ??入?門 package main import “fmt” func main() { fmt.Println(“はろーわーるど!”) } Goで「はろーわーるど」
  • 7. (C) ?ピコもん. ?All ?Rights ?Reserved. 7 Go ??入?門 package main import “fmt” func main() { fmt.Println(“はろーわーるど!”) } Goのお作法 パッケージの名前を宣言する 外部パッケージを呼び出すときはインポート 関数はfunc 実行ポイントはmainパッケージのmain関数 パブリック関数?変数は大文字スタート (プライベート関数?変数は小文字スタート) 最後にセミコロンとかいらない
  • 8. (C) ?ピコもん. ?All ?Rights ?Reserved. 8 Go ??入?門 var message string = “こんにちは” message := “おはよう” var count int // (ゼロ値が入る) var max int = 100 Goの変数代入 固定の型指定や自動的な型予測が出来る
  • 9. (C) ?ピコもん. ?All ?Rights ?Reserved. 9 Go ??入?門 // 配列 message := […]string{ “おはよう”,”こんにちは”,”さようなら”} // スライス messages := []string{ “おはよう”,”こんにちは”,”さようなら”} Goの配列?スライス 配列は厳格な値?スライスは操作しやすい どっちも参照渡し(ポインタ渡し)
  • 10. (C) ?ピコもん. ?All ?Rights ?Reserved. 10 Go ??入?門 func printMsg(type int) bool { switch type { case 1: fmt.Println(“おはよう”) case 2: fmt.Println(“こんばんは”) default: fmt.Println(“こんにちは”) } return true } Goの関数 引数と戻り値の型を指定する (switchでbreakいらない)
  • 11. (C) ?ピコもん. ?All ?Rights ?Reserved. 11 Go ??入?門 func getMsg(type int) (bool, string) { msg := “” err := false switch type { case 1: msg = “こんにちは” case 2: msg = “こんばんは” default: msg = “さようなら” err = true } return msg, err } Goの関数 複数の戻り値を指定できる
  • 12. (C) ?ピコもん. ?All ?Rights ?Reserved. 12 Go ??入?門 func getMsg(type int) (err bool, msg string) { switch type { case 1: msg = “こんにちは” case 2: msg = “こんばんは” default: msg = “さようなら” err = true } return } Goの関数 戻り値を事前に定義できる
  • 13. (C) ?ピコもん. ?All ?Rights ?Reserved. 13 Go ??入?門 $GOPATH ├── bin ├── pkg └── src Goのお作法 開発時のディレクトリ構造 ビルドファイルの出力場所 環境変数で指定 OS環境単位のファイルの自動出力場所 開発中のソース置き場 Githubで管理している場合のsrcの中 $GOPATH/src/github.com/<ユーザー名>/<リポジトリ名>
  • 14. (C) ?ピコもん. ?All ?Rights ?Reserved. 14 Go ??入?門 go install ./main.go go build ./main.go Go実行方法 go test ./main.go ビルド テスト go run ./main.go デバッグ実行 go get github.com/go-sql-driver/mysql 欲しいパッケージがあったら
  • 15. (C) ?ピコもん. ?All ?Rights ?Reserved. 15 Go ??入?門 type Human struct {} type Male interface {} 他にもGo 構造体?インターフェース defer hoge() panic() recover() defer?パニック?リカバー ゴルーチン?チャネル go foo() msg := <- ch ch <- “ok”
  • 16. (C) ?ピコもん. ?All ?Rights ?Reserved. 16 Go ??入?門 いっぱいあって 説明しきれない!
  • 17. (C) ?ピコもん. ?All ?Rights ?Reserved. 17 Go ??入?門 「マイクロサービス」化のアーキテクチャ方針を行うのなら 「切り出し可能なサービス」単位で最適な開発言語やDBを 選ぶ必要が出てくる。 の流れは マイクロサービス!
  • 18. (C) ?ピコもん. ?All ?Rights ?Reserved. 18 Goやろぅ! Go ??入?門
  • 19. (C) ?ピコもん. ?All ?Rights ?Reserved. 19 ご静聴ありがとうございました。 Go ??入?門