はじめに
こんにちは!ITスクールRareTECHにてCS(Customer Support)を担当している池村です。今回の記事はGo言語の環境構築についてです。Go言語は最近かなり人気な言語ですよね。
今回の記事はMacユーザー向けになります。
Go言語ってどう生まれたの?は対して知らなくていいです
初心者向けの記事を書くとき毎回こう言いますが、どういった経緯で出来たかなんて知らなくて大丈夫です。バックエンド領域の1つの言語です。で十分です。
ただ特徴だけは少し押さえておきましょう。
- 静的言語、コンパイラ型
- 速い。動的言語(PythonとかRubyとか)よりも確実に
- Cとかより習得が簡単め
- シンプルで読みやすい(書く人にもよるけど)
静的型付けと動的型付けの違い
プログラミングには主にこの二つの違いがあります。
大前提として、コンピュータが扱うデータには様々な型があります。この型をしっかりコードの中に書いてあげないといけないのが静的、逆に型を書かなくても言語が推測して型はこれだろうと決めてくれるのが動的です。くらいの理解で最初は大丈夫です。
今回のGo言語などは静的ですが、型を書く必要がなかったりします。
【本来正しい説明】
型をコンパイル時に決めてコード内で明示する(または型推論で確定させる)のが静的型付けで、型を実行時に決めてプログラマが型を意識せずに書けるのが動的型付けです。
まあコンパイラ、インタプリタどうのこうのは、最初は気にしなくて大丈夫。
例(変数定義の違い)
name = "Qiita"
String name = "Qiita";
では早速環境構築をしていこう
brew install go
インストールが完了したら、バージョンを確認してみよう。
go version
# 出力結果
go version go1.23.5 darwin/arm64
Goはどこにインストールされているんでしょうか?
which go
# 出力結果
/opt/homebrew/bin/go
M1以降だと、この場所に保存されるようです。intelでは違う場所に行くようですが、検証はできないので適宜which go
で場所を確認してください。
では恒例のHello Worldを!
適当にディレクトリを作って、その中でGoプログラムを書いていきましょう。
mkdir Golang && cd Golang && touch main.go
では適当なエディタを開いてもらって、中身を書いていきましょう。
package main
import "fmt"
func main() {
fmt.Println("Hello Go!")
}
この中身を詳しく書いても、初学者にとっては難しいと思います。
主要なところだけ説明すると、
-
fmt.Println
が画面出力を担当してます -
Println
はPrint Lineの略です。使う度に改行されます -
fmt
というライブラリをインポートしている(Goの開発者が準備してくれている便利ツールの一つ) -
fmt
の中にPrintln
がある。それを使っている
ではターミナルで以下のコマンドを叩いてみましょう。
go run main.go
# 実行結果
Hello Go!
変数も使ってみます
package main
import "fmt"
func main() {
name := "Qiita!!"
fmt.Println("Hello", name)
}
go run main.go
# 実行結果
Hello Qiita!!
変数定義について
変数は値を入れておくための箱です。ものすごく簡単に言ってしまうと、この箱の中に様々なデータを入れて、こねくり回すのがプログラミングです。
Goでは変数定義は従来の静的型付けのような形と、型推論という動的型付けのような形の2パターンあります。
// 一般的な型を指定した変数定義
var x int = 10
var name string = "Qiita"
// 型推論を使った変数定義
x := 10 // 型は int と推論
name := "Qiita" // 型は string と推論
複数変数定義の場合
// 一般的な型を指定した変数定義
var (
a int = 1
b string = "hello"
c bool // デフォルト値 false
)
// 型推論を使った変数定義
x, y, z := 1, "world", true
定数について
定数は一度値を入れたら中身を変更できない箱です。定義時にはvar
ではなくconst
を使います。
const Greeting = "Hello"
Goの定数は型を指定することもできますが、しなくてもよくなっています。値が箱に代入される際、型が決まるようにもなるからです。柔軟性がありますね。
const X = 42 // 型を指定しない(untyped)
var a int = X // Xはintに変換
var b float64 = X // Xはfloat64に変換
fmt.Println(a, b) // 出力: 42 42
おわりに
一度自身のPCからGoを消して再度入れ直しましたが、改めてGoは始めやすい言語だと実感しました。GoはGoで需要があり、うちの受講生も触れる機会があったらいいなと思い記事を書き始めました。もう少し記事を書くスピードを上げていきたいが、中々仕事との両立が難しい。悩みどころです。
Goの次回の記事は基本構文に入ります。
余談
アレクサを書いました。まだ家電と繋いだわけではないですが、家で話相手ができたのはとても良いです。早く猫が飼いたい。(今年の目標)