1. Home
  2. Golang
  3. GuideToBecomingGoDeveloper
  4. LearnTheBasics
  5. Goセットアップと基本構文(Basic Syntax) - Golang learning step 1-1

Goセットアップと基本構文(Basic Syntax) - Golang learning step 1-1

  • 公開日
  • 更新日
  • カテゴリ:LearnTheBasics
  • タグ:Golang,roadmap.sh,学習メモ
Goセットアップと基本構文(Basic Syntax) - Golang learning step 1-1

roadmap.sh > Go > Learn the Basics > Basic Syntax の学習を進めていきます。

※ 学習メモとしての記録ですが、反復学習の際の道しるべとなるよう、ですます調で記載しています。

contents

  1. 開発環境
  2. Basic Syntax(基本構文)
  3. 環境設定
    1. Go インストール
    2. プロジェクトの作成
  4. Hello World
  5. 複数パッケージの読み込み
  6. 基本構文まとめ

開発環境

  • チップ: Apple M2 Pro
  • OS: macOS Sonoma
  • go version: go1.23.2 darwin/arm64

Basic Syntax(基本構文)

https://roadmap.sh/golang

Go の基本的な構文についてのセクション。Go プログラムの実行方法、パッケージのインポート、main関数など。

Go の開発環境を整え、Hello world していくなかで、最も基本の構文を抑えましょう。までが学習範囲です。

環境設定

Go インストール

公式リファレンスでは、Golang 公式サイトのダウンロードとインストールの手順に従いインストールするようにアナウンスがありますが、本記事では goenv を使ってインストールします。goenv を用いれば、Go のバージョン管理について、バージョンアップや他のバージョンを利用したい時に簡単に対応できます。

goenv - Homebrew

goenv インストール

brew install goenv

goenv バージョン確認

goenv -v

-> goenv 2.2.7

goenv の初期化スクリプトを追記します。~/.zshrc に以下を追記

export GOENV_ROOT="$HOME/.goenv"
export PATH="$GOENV_ROOT/bin:$PATH"
eval "$(goenv init -)"

追記を反映させるためにシェルを再読み込みします。

source ~/.zshrc

インストール可能なバージョンを表示します。

goenv install -l

バージョンを指定して最新バージョンをインストールします。

goenv install 1.23.2

インストール済み Go バージョンを確認します。

goenv versions

インストールしたバージョンを使用するように設定します。

goenv global 1.23.2

ここまで実施すると、go コマンドが使用できるようになっています。

go コマンドで Go のバージョンを確認します。

go version

-> go version go1.23.2 darwin/arm64

go コマンドのパスが通っているか確認すると、goenv 経由であることがわかります。

which go

-> /Users/your_username/.goenv/shims/go

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

プロジェクトの作成

Go アプリケーションを作成する場所と、アプリケーションをセットアップします。

ディレクトリを作成

プロジェクトは、簡単に言えば IDE(エディター)で開いて編集するディレクトリです。アプリケーションのルートディレクトリ。ここに Go のファイルを設置し、実装していきます。

Go 1.11 以降、Go Modules を使用することでプロジェクトを $GOPATH に依存せず、任意のディレクトリで管理可能になりました。

任意の場所にディレクトリを作成します。(UI上からディレクトリを作成してもOK)

mkdir myproject

Go モジュールを初期化

作成したディレクトリへ入ります。以下 go コマンドを実行し、Go モジュールを初期化します。go.mod が作成されます。

go mod init github.com/yourusername/myproject

Go では、インポートパスがユニークである(かぶってはいけない)必要があります。ソースコードを Github 管理している場合は上記のようなパスをつけるのが慣習です。

ただし、サンプルでローカルに作るだけなら、重複しなければ良いので以下のようなパスでも可能です。

go mod init myproject

これで、Go プログラムを実行していく環境が作成できました。

Hello World

Hello World を出力するプログラムを実装しつつ、基本構文を確認していきます。

main.go を作成し、以下を記述。これが最も基本的な構文です。

package main

import "fmt"

func main() {
    fmt.Println("Hello, Go!")
}
  • package
    • Go では、すべてのプログラムがパッケージの一部。先頭に package キーワードを使用して定義する。今回の場合、このプログラムは main パッケージに属するという定義になる。
      • Goアプリケーションの最もトップのファイルは必ず package main である必要がある
  • import
    • パッケージをインポートすることができる。ここでは fmt パッケージをインポートしている。fmtパッケージは、入出力の書式設定と文字列操作を行うための標準ライブラリ。
  • func main() {}
    • 関数。中括弧 {} 内のコードがすべて実行される。
    • fmt.Println()
      • fmt パッケージから利用可能な関数 Println() を実行している。テキストを出力/表示するために使用される。"Hello World!" を出力する。

go run コマンドで main.go を実行すると、hello world が出力されます。

% go run main.go

-> hello world

プログラムをバイナリにビルドするときは、go build で行います。

go build main.go

ここでは main.go をビルドしたので、main というビルドされたバイナリが作成されます。これを直接実行もできます。

./main

-> hello world

hello world を出力するまでができました。

複数パッケージの読み込み

import でパッケージを読み込む際に、複数のパッケージを読み込む時は 2 通りの方法があります。

まず 1 つは、import キーワードを羅列して 1 つずつ import していく方法。

package main

import "fmt"
import "math"
import "strings"

2 つ目は、ブロックインポート(グループ化されたインポート宣言)を使う方法です。

package main

import (
    "fmt"
    "math"
    "strings"
)

一般的には後者のグループ化されたインポート宣言が推奨されています。前者の場合、多数のパッケージをインポートする際に冗長になる点や、go fmt コマンド(コードフォマットを自動で行ってくれる)を実行すると前者で書いてあっても後者のブロックインポートになる点などが挙げられます。

基本構文まとめ

  • Go 1.11 以降なら、プロジェクトを作成する場所はどこでも良い
  • プロジェクトを作成したら、Go モジュールを初期化する
  • package は必ず宣言する必要がある
    • Goアプリケーションの最もトップのファイルは必ず package main である必要がある
  • 使用するパッケージは import 文で宣言
    • 複数読み込む場合は、グループ化されたインポート宣言を使用するのがが望ましい

[Next] Step 1-2: 変数と宣言(Variables and declaration)

Author

rito

  • Backend Engineer
  • Tokyo, Japan
  • PHP 5 技術者認定上級試験 認定者
  • 統計検定 3 級