スマレジエンジニアyushiのブログ

スマレジエンジニアのブログ

【TODOリスト 第3回】Goを使ってみる

引き続きTODOリストを作っていきます。

yushi-dev.hatenablog.com

今回は、Goを使ってみます。

下記の書籍を参考にさせていただいています。

GoでHello World

https://github.com/nek0meshi/todo-list/pull/4

ソースコードはこんな感じです。

package main

import (
    "fmt"
    "net/http"
    "os"
)

func handler(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "Hello World! %s!", r.URL.Path[1:])
}

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

    fmt.Fprintln(os.Stdout, "Listening...")
    http.ListenAndServe(":8000", nil)
}

いわゆるmain関数が実行されます。
http.HandleFunc("/", handler)の記述により、/へのリクエストが、
handlerに渡されます。

http.ListenAndServe(":8000", nil)の記述で、port 8000でサーバが起動されます。

ブラウザからアクセスするとこんな感じです。

パスパラメータのyushiに対応して、Hello World! yushi!という表示となっています。

docker-compose.ymlは下記です。

  backend:
    image: golang:1-alpine
    ports:
      - 8000:8000
    volumes:
      - ./backend:/go/src:cached
    tty: true
    working_dir: /go/src

goイメージのデフォルトの設定で、go install XXを実行すると、
/go/src/XX/のソースのビルド結果が/go/bin/XXという実行ファイルとして生成されます。

実行ファイルは、Makfileに用意しています。

.PHONY: run-hello-world
run-hello-world:
  docker-compose exec ${BACKEND_CONTAINER_NAME} sh -c "go install hello_world && ../bin/hello_world"

go installと実行ファイル実行を順に行います。

まとめ

GoでHello Worldまでやってみました。

今後はDB環境を用意してデータ保存、TODOリストのためのAPI作成を行なっていきます。