Go言語プログラミングの基礎【現役エンジニアがわかりやすく解説】

PROGRAM

Go言語プログラミングの基礎を知りたい方に。

この記事を読まれている方は、

  • Go言語のプログラミングがどんなものか知りたい
  • Go言語の簡単な書き方が知りたい
  • Go言語が使われる場面を知りたい

おそらくこのように考えている方が多いと思います。

この記事を書いている私は、
プログラミング未経験から転職を果たした現役のWeb系エンジニアです。
エンジニア歴は3年ですが、本業とは別にフリーランスの副業で月10万円ほど、多いときで20万円ほどの収入があります。

この記事では、現役のエンジニアが、Go言語プログラミングの基礎を解説しています。

プログラミング言語のGo言語の特徴

プログラミング言語のGo言語の特徴

Go言語はGoogleが開発したプログラミング言語のひとつで、静的型付けのコンパイル言語です。

静的型付けの言語とは、簡単に言うと、データを文字列型や数値型、論理型などに分ける必要がある言語のことです。

コンパイル言語とは、プログラムの実行前に、開発者の方でコンパイラーを使って構文チェックなどをしたうえで中間言語に変換しないと動作しない言語のことです。

一方、コンパイル言語と対をなすスクリプト言語とは、プログラム実行前にコンパイルをする必要のない言語のことで、書いた後はすぐにプログラムを実行することができる言語のことです。

一般に、コンパイル言語は、処理速度がスクリプト言語に比べて速くなります。速度が求められる処理では、コンパイル言語が使用されることが多いです。

ちなみに、オブジェクト指向については他の言語のようにクラスのような概念はありませんが、オブジェクト指向のプログラミンができるような仕組みはあります。

オブジェクト指向型言語とは、オブジェクトという概念を持つ言語のことで、簡単に言うと、データ構造として、配列や構造体に加えて、オブジェクト(クラス)があるということです。
オブジェクトのおかげで、ソースコードのメンテナンスがしやすかったり、機能の流用ができます。

Go言語では、このクラスという概念がないため、従来型のオブジェクト指向の特徴は持ち合わせていませんが、構造体や特定のデータに対してメソッドを持たせられることから、オブジェクト指向のようなプログラミングを行うことは可能となっています。

Go言語はGoogleが開発した言語で話題になりましたが、C言語を開発したケン・トンプソンも開発に参加していることから、C言語に則ったプログラミング言語の特徴を持っているので、C言語が祖の言語となります。
具体的には、メモリ安全性や構造的型付けなどの特徴を持つ言語となっています。

他の言語と比べると、コードはかなりシンプルで、例えばループ処理では、while文などはなく、for文のみの対応となっています。
これは開発者によるコードのばらつきの抑制を目的としていますが、それによって処理速度の最適化なども期待できます。

しかし、一方で他の言語では当然持っているはずの例外処理やオブジェクト指向の「継承」をサポートしていないことから、不便さも垣間見えます。
あえて少ないコードで書けるようにしていることを考えれば、やむをえないことではあるのですが…。

Go言語の用途

Go言語の用途

Go言語は静的型付けのコンパイル言語ということもあり、速度が重視される開発でも利用することが可能な言語です。

また、Go言語を使えば、たいていのことは何でもできてしまいます。

例えば、net/httpパッケージを使えば、Webアプリケーション開発にGo言語を使うことも可能です。
スマホアプリに関しても、Go Mobileのパッケージを使えば、AndroidやiPhoneアプリの開発もできます。
その他CLIアプリなど、幅広くアプリケーションを開発できるため、Go言語は最近注目されています。

コードがシンプルなことから、コードのバラつきのでやすい多人数での開発に向いています。
基幹システムで利用されるにはもう少し待たなければいけませんが、今後さらに需要が出て来る言語であると思います。

Go言語の書き方

Go言語の書き方

ここでは簡単に書き方を少しだけ紹介します。実際に始める気になったら、ぜひ参考書などの教材を参考にして、試してみて下さい。

Hello World!を画面に出力する

まずはお決まりのHello World!という文字列を画面に出力する方法から。

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

これで出力することができます。
C言語やJavaなどと同じように、main関数を書かなければ動きません。mainパッケージもあわせて呼ぶ必要があります。

コンパイル言語のため、プログラム実行前にはコンパイラーを使って中間言語に変換する必要があります。

変数宣言と分岐処理

次は少し踏み込んで、変数宣言と分岐処理をしてみます。

package main
import "fmt"
func main(){
    age := 19
    if age < 20 {
        fmt.Printf("未成年")
    } else {
        fmt.Printf("成人")
    }
}

上記の例では、まずageという数値型の変数を作り、その中に19という数値を入れています。
次にageが20未満であれば”未成年”という文字列を、それ以外であれば”成人”という文字列を出力するような分岐処理をしています。

配列と繰返処理

続いて、配列の使い方と繰返処理について、解説します。

ここでは配列を作って、以下のようにデータを出力することにしましょう。

佐藤,田中,小林

これを出力するコードは以下です。

package main
import "fmt"
func main(){
    students := [] string{"佐藤", "田中", "小林"}
    for i := 0; i < len(students); i++ {
		fmt.Printf("%s", students[i])
		if i<len(students)-1 {fmt.Printf(",")}
	}
}

上記の例では、まず文字列型の配列studentsに「佐藤」「田中」「小林」の3つの文字列を格納しています。
その後、数値型のカウンタ変数iを0に初期セットし、配列studentsの要素の数に到達するまでループでiを1ずつ増やしてまわしていきます。その際に、Printf関数を使い、配列studentsのi番目の要素の値を出力し、最後の要素以外、その後に「,(カンマ)」を出力しています。

構造体の取り扱い

最後に構造体の取り扱い方法について解説します。

ここではエクセルのようなデータを作って、以下のようにデータを出力することにしましょう。

名前:佐藤,性別:男性
名前:田中,性別:女性
名前:小林,性別:女性

これを出力するコードは以下です。

package main
import "fmt"
func main(){
    var first_row = map[string]string{"A":"佐藤", "B": "男性"}
    var second_row = map[string]string{"A":"田中", "B": "女性"}
    var third_row = map[string]string{"A":"小林", "B": "女性"}
    excel_data := map[int]map[string]string{0:first_row,1:second_row,2:third_row}
    for i := 0; i < len(excel_data); i++ {
		fmt.Printf("名前:%s", excel_data[i]["A"])
		fmt.Printf(",")
		fmt.Printf("性別:%s\n", excel_data[i]["B"])
	}
}

上記の例では、まずfirst_row, second_row, third_rowという、キー・値がともに文字列型の連想配列を3つ作り、Aというキー(列)に名前を、Bのキーに性別の値を入れていきます。
そして、それら全てをexcel_dataという、キーが数値型の添字、値が連想配列型の連想配列に入れていきます。
その後、数値型のカウンタ変数iを0に初期セットし、配列excel_dataの要素の数に到達するまでループでiを1ずつ増やしてまわしていきます。その際に、Printf関数を使い、配列excel_dataのi番目の要素の中のA列とB列の値を出力しています。

まとめ:Go言語はGoogleが開発した書きやすく読みやすい言語

まとめ:Go言語はGoogleが開発した書きやすく読みやすい言語

Go言語の良さを簡単にまとめると、以下のとおりです。

  • コードがシンプル ← 少ないコードで書ける
  • 幅広く開発できる ← Web系アプリやスマホアプリも開発可
  • Googleの言語 ← 影響力のあるGoogleが開発した言語

つまりGo言語は、Googleという大きな後ろ盾がいて、少ないコードで記述できる書きやすく読みやすい言語ということになります。

最近ではYouTubeなどGoogle内にとどまらず、国内外の多くの企業でGo言語が導入されています。日本ではメルカリなどが実際に導入しました。需要が高まっていっているため、これからプログラミングを学ばれる方には、Go言語はオススメの言語の一つです。

Go言語はシンプルなコードで書けますが、静的型付けの言語で、新しい言語のためサンプルが少なく、独学は難しいという方もいるかもしれません。もし独学でできなさそうな方は、プログラミングスクールも手段の一つに入れると良いと思います。