狠狠撸

狠狠撸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 ??入?門

More Related Content

骋辞濒补苍驳入门

  • 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 ??入?門