Go
golang

GoでLTやることになったので準備用のメモ

More than 1 year has passed since last update.

まずは

何といっても環境設定。

・・・と思いましたが、
その前に自己紹介ですね。


自己紹介

元々は通信系の技術者。
C言語畑出身。(10年以上)
某携帯会社の交換機で呼制御などをやってました。

そこから転職を機にJavaを経て
Php・Python・Rubyなどでweb系にもチラッとだけ携わりつつ
3年前からGoで開発をするようになりました。

やったことあるものは
Facebookの仕事上のスキル にもザ~と載せてあります。


で、本題の環境設定に戻りまして・・・

まずは ココ から好きなものを持って来よう。


インストール

基本ポチポチしていくだけ・・・


GOROOT・GOPATH

GOROOTはインストールした場所。(例:c:\Go)
 ※インストーラーなら設定されているはず。

GOPATHは好きな場所。(例:d:\GoPath)
その下にsrcを作ってプロジェクトを作ってアプリを作る感じが良い。
(例:GOPATH/src/myproject/hello)


エディタは・・・

もちろんお好きなもので。

IDEも
もちろんお好きなもので。

僕は LiteIDE 使ってます。

軽くやりたい方向けなので
ガッツリやりたい方は別の方がいいかもしれません。


早速 Hello World

webサーバでたったこれだけ。

main.go

package main

import (
    "fmt"
    "net/http"
)

func main() {
    http.HandleFunc("/", handler)
    http.ListenAndServe("", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World")
}

やっぱGoってすごい。


コンパイルと実行

IDEを入れた方はBR(build & Run)ボタンを押すだけです。

コマンドの方は
go build
してできたファイルを実行すればOK。
(今回は標準packageのみのimportなのでgo getは不要。)

もちろんgo installでもOKです。


接続してみる

image.png

終了・・・。


Goでいいと思うところ

・GoFmtで自動でフォーマットをかけてくれるので
 インデントも含めて適当に書いてもキレイなコードになる。

・不要なimportもコンパイルエラーになるのでキレイが維持できる。

・最後に ;(セミコロン)が要らない。

・ifやforに()が要らない。

・変数定義と初期化を同時にできる。

・importするだけで色んなライブラリが使えて便利。(標準/カスタム)

・deferを使えば解放漏れが防止できる。

・環境設定も楽で、コード量も少なくすぐできちゃう。

・Apache等々、webサーバ系の他のものが要らない。

・コンパイラ言語なので実行ファイルを作ってデプロイすれば割とどこでも動く。
 (各OS用にコンパイルをする形。)

・コードを書き換えても実行ファイルを置き換えなければ運用しているものに影響がない。

・実行ファイルだけバックアップしておけば不測の事態にもすぐに戻せる。

・処理スピードが速い。平行処理もgoroutineですぐにできてしまう。

とか・・・??
(すみません、あくまでLTのメモなので今思い付いたものだけです・・・)


本当はもっと書きたかったこと

・ディレクトリ構成はどんな感じがいいのか?

・どんな感じのpackageフローが良いのか?
 (僕の場合packageをclassの様にして、レシーバを使ってMVCっぽい感じにしてます。
  なるべく1つ1つを小さくしてマイクロサービス的な感じでライトに使うのが個人的にはオススメです。)

・goroutineの実装方法。
  ⇒【追記】後日記事を書きました。
     GoのLT用にgoroutineのサンプルを書く

などなどなどなど・・・


最後に・・・

初だし、LTだし、初心者向けというところで
まずはこんな感じかなと・・・。
(メモレベルなので、あまりいい記事じゃなくてすみません。。)

質問などコメントいただければ
AnswerソングならぬAnswer記事もなるべく書いていきたいと思います!