LoginSignup
1
0

More than 1 year has passed since last update.

Golang 新規プロジェクトのセットアップ

Last updated at Posted at 2022-11-26

やりたいこと

滅多にやらないプロジェクトのセットアップ方法の備忘録
とりあえずHello world!を表示するサンプルプロジェクトを立ち上げる

環境

  • macOS Monterey 12.2.1
  • VSCode
  • go 1.18
    $ go version
    go version go1.18 darwin/arm64
    

プロジェクト作成

作業ディレクトの作成

作業用ディレクトリ作成して、移動

mkdir sample-project
cd sample-project

パッケージ管理の初期化

Golangでは基本的にGo Modulesを使用してパッケージを管理する。(Node.jsのnpmやPythonのpipのようなものです。)以前はGOPATHでパッケージ管理していたみたいですが、今はGo Modulesで管理。

モジュールの初期化。
下記コマンドを実行したディレクトリがプロジェクト(リポジトリ)のルートディレクトリになる。

go mod init {プロジェクト名}

プロジェクト名は、下記の命名規則に従う

  • GitHubなどで公開する場合: github.com/{GitHubユーザー名}/sample-project
  • Localのみ: sample-project

実行すると、go.modがプロジェクトのルートに作られているはずです。このファイルでこのリポジトリのパッケージを管理します。

参照するパッケージ追加/削除

  • パッケージの追加
    (参照するパッケージをgo.modに追加しているだけで、インストールはしていないらしい)

    go get {パッケージ名}
    

    グローバルインストールする場合はgo installを使うらしいが、リポジトリ内だけの操作であれば不要だと思う。 (Go 1.18~ go get削除されたのではなく、go getを使ってインストールができなくなっただけっぽい)

  • パッケージの更新や削除

    go mod tidy
    

    使われていないパッケージがgo.modにあれば削除してくれる。 ちなみにgo getしなくてもimportに新規パッケージが記述されていれば、このコマンドでgo.modに追加される

サンプルコード作成

エディタで下記をリポジトリのルートに作成。
(ちなみにVSCodeのGoの拡張機能を入れるコードのフォーマットを自動でやってくれます)

main.go
package main

import (
   "fmt"
)

func main() {
   fmt.Println("Hello World!")
}

実行

$ go run main.go
Hello world!

補足

  • ファイルが分かれていても同一ディレクトリ内であれば同一パッケージになり、同一パッケージであれば別ファイルの関数や変数でもprivateなものとして呼び出すことができます。
  • ディレクトリが異なる場合は別のパッケージになり、呼び出しには{パッケージ名}.{関数名}と記述する必要があります。また呼び出せるのはPublicで宣言されているものだけです。
hello_jp.go
package main

import (
   "fmt"
)

func helloJp() {
   fmt.Println("Hello Japan!")
}
us/hello_us.go
package us

import (
   "fmt"
)

func HelloUs() {
   fmt.Println("Hello US!")
}
main.go
package main

import (
   "fmt"
)

func main() {
   fmt.Println("Hello World!")
   helloJp()     // 同じディレクトリの別ファイルのprivate関数の呼び出し
   us.HelloUs()  // 異なるディレクトリのPublic関数の呼び出し
}

これを踏まえて、プロジェクトのディレクトリ構造を決める

ビルド

goはコンパイラ言語なので実行にはビルドする必要がある。(go runはコンパイル+実行)
コンパイルした後のビルドファイルはGoの環境がなくても実行できるバイナリなので、デプロイする場合はビルドファイルを使用する。

ビルドファイルの作成

go build {コンパイル後のファイル名} {コンパイルするgoファイル名}

何も指定しないgo buildだけの場合はmain.goがコンパイルされ、リポジトリ名のビルドファイルがリポジトリのルートに作成される。

ビルドファイルの実行

$ ./{ビルドファイル名}
Hello world!

終わり

以上が新規でプロジェクトを始めるときのセットアップ方法

参考

1
0
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
0