Skip to content

ozaki-physics/go-training-composition

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-training-composition

Go 言語で様々なことをやってみる練習リポジトリ

目的 Overview

Go でアプリを作るための以下の練習

作ったもの

インストール方法 Install

環境 Requirement

  • Docker

使い方 Usage

VS Code の拡張機能 Remote - Containers(識別子: ms-vscode-remote.remote-containers) を使って開発する
コンテナ内で VS Code を起動し go 言語のための VS Code の拡張機能 Go(識別子: golang.go) を使う
golang.go

golang.go を使うために 様々なパッケージをインストールする必要がある
開発用の パッケージを Docker image に含めないようにするために
コンテナを起動した後の コンテナ内 VS Code でインストールする
VS Code の通知より install All をする(補完だけでいいなら gopls だけインストールでも良さそう)

コンテナ内の git では日本語が使えないため コミットするときは ローカルの git bash 等を使う

$ docker-compose build
# VS Code より Remote - Containers で接続する
# たまに .devcontainer\devcontainer.json の差分を検知して rebuild するような通知が来る
# その時は docker image も作り直されて 古い方の image が <none> になるため削除する

# VS Code の通知(golang.go)より install All をする
# 補完だけでいいなら 通知より gopls を install する
# (.devcontainer\devcontainer.json に自動で gopls だけはインストールするようにしてあるから すぐ終わるはず)

# 基本は VS Code 内のターミナルで良いが ローカルの PowerShell からアクセスしたくなった場合
$ docker-compose exec go_training bash

# 終えるとき
# VS Code より Remote - Containers で接続をやめる
$ docker-compose down

ちょっと前までは コンテナを落とさない運用を考えていた
でも最近は コンテナも削除している
一応コンテナを落とさない手順も書いておく

# VS Code より Remote - Containers で接続する前に
$ docker-compose up -d
# VS Code より Remote - Containers で接続する

# 終えるとき
# VS Code より Remote - Containers で接続をやめる
$ docker-compose stop
# 再開するとき
$ docker-compose start
# VS Code より Remote - Containers で接続する

ちなみに image の時点で go build は済んでおり
image から直接 run または docker-compose.yml の command をコメントアウトで build でコンパイルした go の コードが実行できる

$ docker container run --rm -d -p 8080:8080 --name check_go_training go1.17:training_composition_vscode_in_container
$ docker container stop check_go_training

最初に go のパッケージ管理ファイル go.mod を生成するコマンド

/go/src/github.com/ozaki-physics/go-training-composition# go mod init $REPOSITORY

外部パッケージのバージョンアップ

例として github.com/gin-gonic/gin をバージョンアップする

  1. コンテナにアタッチする
  2. パッケージのバージョンアップして go.mod を更新する
  3. コンテナを削除してもバージョンアップが反映されるように docker image を作り直す
$ docker-compose up -d
$ docker-compose exec go_training bash

# パッケージをインストールするときは go install が推奨(go get は非推奨)
# でもエラーで go get を使えと言われることもある
# go mod tidy を実行すると自動で整理してくれる

# パッケージのバージョンアップ
/go/src/github.com/ozaki-physics/go-training-composition# go get -d -v -u github.com/gin-gonic/gin
# 不要パッケージの削除
/go/src/github.com/ozaki-physics/go-training-composition# go mod tidy -v

$ docker-compose down
$ docker image rm go1.17:training_composition_vscode_in_container
# docker image の作り直し(Dockerfile で go.mod を元にインストールするような記述があるから)
$ docker-compose build

golang.go でインストールされるパッケージ

  • Installing github.com/uudashr/gopkgs/v2/cmd/gopkgs (/go/bin/gopkgs) SUCCEEDED
    gopkgs
    インポートできるパッケージのリストを表示するツール
  • Installing github.com/ramya-rao-a/go-outline (/go/bin/go-outline) SUCCEEDED
    Go Outline
    JSON 表現を抽出するためのシンプルなユーティリティ
  • Installing github.com/cweill/gotests/gotests (/go/bin/gotests) SUCCEEDED
    gotests
    テスト生成ツール
  • Installing github.com/fatih/gomodifytags (/go/bin/gomodifytags) SUCCEEDED
    gomodifytags
    golang の struct に タグを追加したり更新したりする
  • Installing github.com/josharian/impl (/go/bin/impl) SUCCEEDED
    impl
    インターフェースを実装するためのメソッドスタブを生成
  • Installing github.com/haya14busa/goplay/cmd/goplay (/go/bin/goplay) SUCCEEDED
    goplay - The Go Playground Client
    The Go Playground にコードを貼り付けつつ Web ページへ遷移する
  • Installing github.com/go-delve/delve/cmd/dlv (/go/bin/dlv) SUCCEEDED
    delve
    デバッガ
  • Installing github.com/go-delve/delve/cmd/dlv@master (/go/bin/dlv-dap) SUCCEEDED
    delve
    デバッガ
  • Installing honnef.co/go/tools/cmd/staticcheck (/go/bin/staticcheck) SUCCEEDED
    staticcheck
    リンター linter
  • Installing golang.org/x/tools/gopls (/go/bin/gopls) SUCCEEDED
    gopls, the Go language server
    Go チームによって開発された公式の Go 言語サーバーです
    LSP 互換のエディターに IDE 機能を提供します
    コードの自動補完補完ツールらしい

参考文献 References

Standard Go Project Layout
Go の公式 github

About

[勉強] Go 言語で様々なことをやってみる

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages