Go言語 基礎講座 #0 環境構築

f:id:shinta2000ttt:20200722180639p:plain

早速少し話がそれますが、自分はGo言語のJetBrains製IDEであるGolandを使っていてGoの新規プロジェクトの作成などを勝手にしてくれるのでおすすめです。学生の方でしたら無料で使えるライセンスがあるのでぜひ確認してみてください↓

www.jetbrains.com

目次

インストール 

前提環境

  • Mac OS
  • Homebrewがインストール済

インストール

$ brew install go

これでインストール完了です。

$ go version 
go version go1.13.6 darwin/amd64

バージョン確認をして、ちゃんとインストールされたことを確かめましょう。

GOPATHの設定

export GOPATH=/Users/YOUR_USER_NAME/go
export PATH=$GOPATH/bin:$PATH

.bash_profileに↑を追加。GOPATHはインストールするGo関連の外部ライブラリなどが入る場所です。Goのインストール後はこの設定をしなければいけません。

$ source ~/.bash_profile

.bash_profileをアクティベートして設定を適用します。 今回があくまで例として~/goをGOPATHとして設定しましたが、他の場所でも構いません。 どこに設定すべきかこの記事で解説されています↓

Go言語の開発環境セットアップ - Qiita

以上でインストール作業は完了です!

新規プロジェクトの作成

$ mkdir PROJECT_NAME  // ~/go/src以下で
$ cd PROJECT_NAME

$ go mod init github.com/GITHUB_USER_NAME/PROJECT_NAME
go: creating new go.mod: module github.com/GITHUB_USER_NAME/PROJECT_NAME

これで新規プロジェクトが~/go/src以下に作成されました。go mod initコマンドを行わないとGo Moduleプロジェクトと認識されなくなります。

Depのインストール

DepはGoのパッケージ依存関係管理ツールです。

$ go get -u github.com/golang/dep/cmd/dep

これでインストールは完了。

$ dep init

これでDepを初期化し、このプロジェクトで利用できる状態にします。

Depのメリット

Depのメリットは外部パッケージのインストールの手間が省けると言うことです。
Depがないと上のようにいちいちgo get ~~とコマンドを打ち込まないといけませんが、Depだと...

imoprt(
    "github.com/gin-gonic/gin"
    "github.com/jinzhu/gorm"
) 

このようにコード内にこのパッケージを使いますよーと言う記述だけで、あとは以下のコマンドを実行すれば全てのパッケージを一括インストールしてくれます。

$ dep ensure

ディレクトリ構成

Goはパッケージ(ディレクトリ)レベルで名前空間を構成しています。そしてプロジェクトルート(~/go/src/PROJECT_NAME)はmainパッケージといい、mainパッケージ内のmain.goから他のパッケージを参照するなどしてプログラム全体を実行します。 
なので基本はgo run(Goの実行コマンド)はmain.goに対してのみ行います。

PROJECT_NAME/
    |
    ---main.go
    |
    ---learngo/
    |      |
    |      ---learn.go
   --

例えば、この基礎講座のためにlearngo/と言うパッケージを作り、その中にlearn.goと言うファイルを作ってください。この中にこれから学ぶGoのプログラムを書き込んで行きます。(関数など)

package main

import (
    learngo "PROJECT_NAME/learngo"
)

func main() {
    learngo.SOME_FUNCTION()
}

main.goこのように書きます。Goファイルでは必ず一番上でpackageを明示してください。次にパッケージをインストールします(今回はlearngo)。そしてmain関数を作成します。main.goを実行するとこのmain関数が実行されます。

今後この講座で紹介する内容はlearn.go内の適当な名前の関数内に実装し、main.goから呼び出して実行してください。

// learn.go

func SOME_FUNCTION(){
    <講座で紹介する内容>
}

以上でGoでプログラミングをする準備が整いました。次回からGoの文法などを説明していきます。