エンジニアになりたい人募集!X(旧Twitter)からフォローしたらリプライで質問常時OK!

【ステップ5】Go言語の基本的な演算子と式

はじめに

本記事は全30ステップで学ぶGolangをテーマにしたGolang学習フローステップ5です。
この記事へ直接訪問された方は、ぜひ下記の記事を参考に自身の理解度をふまえて学習を開始してみてください。

【全30ステップ】Golangで始めるプログラミング学習

前回までのあらすじ

前回のステップでは、Go言語の変数とデータ型について学びました。変数の宣言方法、基本的なデータ型(整数、浮動小数点数、文字列、ブーリアン)、そして型推論について理解を深めました。今回は、これらの変数を使って演算を行う方法を学んでいきます。

【ステップ4】Go言語の変数とデータ型

Go言語の演算子

Go言語には、他のプログラミング言語と同様に、様々な演算子が用意されています。これらの演算子を使うことで、変数や値を操作し、新しい値を生成することができます。

またGithubからリポジトリをクローンした方は各項目に記載の sampleXexercisesX がコードとリンクしています。

1. 算術演算子

算術演算子は数値を操作するために使用します。

  • + (加算)
  • - (減算)
  • * (乗算)
  • / (除算)
  • % (剰余)
算術演算子を使ったサンプルと実行結果: sample1

簡単な四則演算と剰余についてみてみましょう。
それぞれ10と3という数字に対して計算してみます。

go
package main

import "fmt"

func main() {
    a := 10
    b := 3

    fmt.Println("加算:", a + b)
    fmt.Println("減算:", a - b)
    fmt.Println("乗算:", a * b)
    fmt.Println("除算:", a / b)
    fmt.Println("剰余:", a % b)
}

結果は当然ながらこうなります。

result
加算: 13
減算: 7
乗算: 30
除算: 3
剰余: 1

注意: 整数同士の除算は、結果も整数になります(小数点以下は切り捨てられます)。

2. 比較演算子

比較演算子は、二つの値を比較し、真偽値(trueまたはfalse)を返します。

  • == (等しい)
  • != (等しくない)
  • < (より小さい)
  • > (より大きい)
  • <= (以下)
  • >= (以上)
比較演算子を使ったサンプルと実行結果: sample2

簡単な比較式とその結果を確認してみましょう。

go
package main

import "fmt"

func main() {
    x := 5
    y := 10

    fmt.Println("x == y:", x == y)
    fmt.Println("x != y:", x != y)
    fmt.Println("x < y:", x < y)
    fmt.Println("x > y:", x > y)
    fmt.Println("x <= y:", x <= y)
    fmt.Println("x >= y:", x >= y)
}

結果はこうなります。

result
x == y: false
x != y: true
x < y: true
x > y: false
x <= y: true
x >= y: false

3. 論理演算子

論理演算子は、ブーリアン値を操作するために使用します。

  • && (論理AND)
  • || (論理OR)
  • ! (論理NOT)
論理演算子を使ったサンプルと実行結果: sample3

簡単な論理式とその結果を確認してみましょう。

go
package main

import "fmt"

func main() {
    a := true
    b := false

    fmt.Println("a && b:", a && b)
    fmt.Println("a || b:", a || b)
    fmt.Println("!a:", !a)
}

結果はこうなります。

result
a && b: false
a || b: true
!a: false

4. 代入演算子

Go言語には、演算と代入を同時に行う複合代入演算子があります。

  • += (加算して代入)
  • -= (減算して代入)
  • *= (乗算して代入)
  • /= (除算して代入)
  • %= (剰余を代入)
代入演算子を使ったサンプルと実行結果: sample4

簡単な代入式とその結果を確認してみましょう。

go
package main

import "fmt"

func main() {
    x := 10

    x += 5
    fmt.Println("x += 5:", x)

    x -= 3
    fmt.Println("x -= 3:", x)

    x *= 2
    fmt.Println("x *= 2:", x)

    x /= 4
    fmt.Println("x /= 4:", x)

    x %= 3
    fmt.Println("x %= 3:", x)
}

結果はこうなります。

result
x += 5: 15
x -= 3: 12
x *= 2: 24
x /= 4: 6
x %= 3: 0

Go言語特有の演算子

Go言語には、他の言語にはない特殊な演算子もあります。

1. アドレス演算子(&)とデリファレンス演算子(*)

これらの演算子はポインタ操作に使用されます。詳細は後のステップで学びます。

Go言語のつまづきポイントです。

2. チャネル受信演算子(<-)

この演算子は並行プログラミングで使用され、チャネルからデータを受信します。これも後のステップで詳しく学びます。

実践的な演習問題

問1:華氏を摂氏に変換するプログラムを作成してください: exercises1

・変換式は C = (F - 32) * 5/9 です。
C=摂氏, F=華氏

クリックして答えを見る
go
package main

import "fmt"

func main() {
	f := 77
	fmt.Println("f=", f, " c:", (f-32)*5/9)
}

華氏を摂氏へ変換する式は記述の通りなので、残りは摂氏を計算する、出力する…etc簡単ですね!

問2:与えられた年が閏年かどうか判定するプログラムを作成してください: exercises2

閏年の条件は下記の通りです。

  • 4で割り切れる年は閏年
  • ただし、100で割り切れる年は閏年ではない
  • ただし、400で割り切れる年は閏年
クリックして答えを見る
go
package main

import "fmt"

func main() {
	year := 2024
	r4 := year % 4
	r100 := year % 100
	r400 := year % 400
	if r4 == 0 {
		if r100 != 0 && r400 == 0 {
			fmt.Println("閏年です")
			return
		}
	}
	fmt.Println("閏年ではありません")
}

このぐらい条件が増えると、プログラムの書き方が大幅に増えるので、答えは一例です。
実際に2000, 2004, 2100といったパターンを用意して動作確認をしてみましょう。

サンプルと演習問題の動くコードを公開!

Githubにて各ステップのコードを公開しています。cloneして動かしてみたり、手を入れて理解を深めてください。
ぜひStarでの評価をお願いします!

次のステップへのつながり

演算子と式の基本を理解したことで、より複雑なプログラムを書く準備が整いました。次のステップでは、標準入出力の扱い方について学びます。これにより、ユーザーからの入力を受け取り、結果を出力する対話的なプログラムを作成できるようになります。

【ステップ6】Go言語でのコンソールからの入力と出力

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)