1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Go言語]インストール〜実行(環境構築)

Last updated at Posted at 2023-08-05

はじめに

  • バックエンドのキャッチアップを行いたかったので、人気のGoを学ぶ。
  • 自学用のアウトプット記事。

Goのインストール

  • PCはMac。homebrewをインストール済みであること。
> brew install go
  • これだけ。パスの設定も必要なかった。バージョンが表示されればOK。
> go version
go version go1.20.7 darwin/arm64

Goの実行

  • go run 実行ファイル/goファイル

    • buildで作成した実行ファイルを指定することで実行する。
    • goファイルを指定した場合は、コンパイルせずに実行できる。手軽に試した場合に実施する。
      • 内部的には、コンパイルファイルを一時領域に作って、終わったら削除している
  • go build ファイル名

    • 実行形式のファイルが作られる
  • go mod

    • モジュールを作成するコマンド。
    • プロジェクト等、まとまった単位でソース管理する場合に行う。
  • 実行例

    • hello-worldフォルダを作成する。(これをモジュールフォルダとする。)
    • hello.goファイルを作成する。
    hello.go
    package main
    
    import "fmt"
    
    func main() {fmt.Println("hello world")}
    
    • モジュールを作成し、ビルド〜実行
    > go mod init hello-world // モジュールの初期化。.modファイルが作成される。
    > go mod tidiy // 必要なライブラリのダウンロードや不要ファイルを削除(npm install的な立ち位置か)
    > go build // hello-worldという実行ファイルができる。
    > go run hello-world // モジュール実行ファイルの実施
    hello world
    

ライブラリのインストール

  • go install "githubのURL" でライブラリをインストールする。
  • packege.jsonのようなものはなく、インストールするとバイナリファイルがホームディレクトリ配下のgo/binに格納される。
  • 実行するためにも、.zshrcにパスを追加する。
pathの追加
cd ~
open .zshrc
// $PATH前に左記を追加。 /homeディレクトリ/go/bin:
source .zshrc

goimports

  • フォーマット整形や、impport文の編成を行ってくれるライブラリ。
import
> go install golang.org/x/tools/cmd/goimports@latest
実行
// -l 対象ファイルを表示
// -w 対象ファイルを書き換え
// . カレントディレクトリとサブディレクトリが対象
> goimports -l -w .
フォーマットされたファイル
- func main() {fmt.Println("テスト");};
+ func main() { fmt.Println("テスト") }

golangci-lint

  • 静的構文チェックや潜在的なバグ発見などを一括で行ってくれるライブラリ
    • それぞれ個別にもライブラリはある。staticcheckやvetなど
  • ルールが厳格なので、プロジェクトに導入した際、全て対応は難しい。
  • golangci.ymlで調整できる。
  • なお、このライブラリはgo install非推奨らしいので注意。

  • なので、brewでインストール
> brew install golangci-lint
  • モジュールファイル内で実行
> golangci-lint run

IDE

  • VsCodeかGoLand(JetBreins)
  • 無料なのでVsCodeにした。
  • Goの拡張機能があるので追加。(go拡張子作ったらおすすめされるやつ。)
    • goplsのインストールも促されるのでOKでインストール

Makefile

  • フォーマットやlint、buildなどを一括で行うためのファイル。
  • packege.jsonのスクリプトに相当
  • 記述例
    • 今までの内容を踏まえ、フォーマット→lint→ビルドまでを行う。
Makefile
// 最終的に実行するスクリプト
.DEFAULT_GOAL := build

// 変数: 改行字下げで、実行するコマンド
fmt:
	goimports -l -w .
// .PHONY: 変数であることの印。フォルダ名と被った場合などで区別するため定義しておく。
.PHONY: fmt

// 変数: 前提となる変数→前提としてfmtを実施。
lint:fmt
	golangci-lint run

// build実施の前提としてlint、その前提としてfmtが実施される。
build:lint
	go mod tidy
	go build
makefileの実行
> make
goimports -l -w .
golangci-lint run
go mod tidy
go build
作成された実行ファイを実施。
> go run hello-world
hello world

補足:gitignore

  • git管理する際、buildで作られた実行ファイルは除外したいが、macでは「.exe」の拡張子がつかない。
  • 従って、拡張子のないファイルを除外するようにする
.gitignore
*
!*/
!*.*
!Makefile // Makefileは残す

*.exe
.DS_Store

おわりに

  • goをインストールするだけで手軽に実行できる。
  • lintやフォーマットなどのライブラリの設定もわかりやすかった。
  • makefileの書き方は少しくせがあるが、慣れれば大丈夫そう。
  • 次回から文法の学習に入るが、環境周りのつまづきが少ないのは好印象。
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?