🦫

GOlang入門

2021/06/13に公開約8,600字

随時更新

ここにコード類は載せてるよ

環境構築

  1. dockerfileを作成
  2. docker-compose.ymlを作成
  3. vscodeのソース管理タブで"GitHubに公開"を選択し、リポジトリ名を決めpush
  • リモートでgit init、ローカルでgit initgit add .git commit -m "first commit"git remote add origin https://github.com~~~~git pushまで自動で行われる
  1. masterからmainに変更する(githubのリモート&ローカルブランチ)branches
  2. docker-compose up -dで起動
  3. docker-compose downで削除

コードを実行

  1. マウントディレクトリにmain.goを作成
  2. docker-compose up -dで起動
  3. docker-compose exec app go run main.go
    - docker-compose run app go run main.goならdockercomposeが起動していなくても実行できる

基礎初級~progate~

基礎初級~A Tour of Go~

基礎中級~progate~

変数はコンピュータのメモリに保存され、その場所をアドレスと呼ぶ
👉アドレスは16進数で表され、他の変数に代入することもできる
👉GOではアドレスをポインタと呼び扱っている

基礎中級~A Tour of Go~

Moduleについて

(modファイル作る前からfmtとか使えたけどなぜなのか)
Goのパッケージ管理システム

go.modファイルを作成する
$ go mod init 命名

パッケージのインストール方法
go.sumファイルが作られ、これにはパッケージのバージョンとそのhash値が入っている
👉 npmでいうpackage.lock.jsonみたいなもの
$ go get -u インストールしたいパッケージ
👉 -uをつけることで、パッケージとその依存パッケージをネットワークから更新できる

未使用のパッケージを削除する
$ go mod tidy -v
👉 -vをつけることで、削除されたパッケージ情報を出力できる

先にmain.goにimportされていないパッケージを記述しておいて、コマンドでインストールする
$ go build
👉 本来はコンパイルする為に使われるコマンド
👉 コンパイル後はバイナリファイルが生成され、ファイル名を指定しただけでGOが走る(runする)
👉 バイナリファイルはgo.modにあるmodule名になる

環境変数を表示
$ go env

スターティングGo言語

制御構文までの基礎

  defer fmt.Println("A")//関数呼び出しの形式 👉 最後に()がつく
  defer func(){
    fmt.Println("A")
    fmt.Println("B")
    }() //関数呼び出しの形式 👉 最後に()がつく
  • panicとrecoverについて
    • 一種の例外処理を実現するものだが、goを強制的に停止させる機能を持つため多用するものではない
    • この仕組みを利用しているプロダクトはわずか
    • panic文が定義されているところまでは処理が走る
  • go文について
    • 並行処理 👉 goはこれを簡単に実現する
      • 物理的に、複数の仕事を同時に行っていること
      • cpuのコアが1つだと実現できない
    • 並列処理
      • 複数の仕事間を瞬時に切り替えることによって、同時にやっているように見えること
  • initについて
    • 引数、戻り値を設定するとエラーが出る
    • 一番初めに評価されるので、初期化に使われる

参照型

GitHubで編集を提案

Discussion

ログインするとコメントできます