Golang における演算子を用たデータ処理

GolangGolangBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

プログラミング言語でデータを変数に保存した後、どのように処理すればよいでしょうか。

このとき、保存されたデータに対して計算を行うために 演算子 が必要になります。このセクションでは、以下のことを学びます。

学習項目

  • 算術演算子
  • 比較演算子
  • 論理演算子
  • 代入演算子

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL go(("Golang")) -.-> go/BasicsGroup(["Basics"]) go(("Golang")) -.-> go/FunctionsandControlFlowGroup(["Functions and Control Flow"]) go/BasicsGroup -.-> go/variables("Variables") go/FunctionsandControlFlowGroup -.-> go/for("For") go/FunctionsandControlFlowGroup -.-> go/if_else("If Else") go/FunctionsandControlFlowGroup -.-> go/functions("Functions") subgraph Lab Skills go/variables -.-> lab-149066{{"Golang における演算子を用たデータ処理"}} go/for -.-> lab-149066{{"Golang における演算子を用たデータ処理"}} go/if_else -.-> lab-149066{{"Golang における演算子を用たデータ処理"}} go/functions -.-> lab-149066{{"Golang における演算子を用たデータ処理"}} end

基本形式

算術演算子は最も基本的な演算子で、基本的な計算方法を表します。

演算子 機能
+ 加算
- 減算
* 乗算
/ 除算
% 剰余算

home/project/ ディレクトリに opePractice.go という名前のファイルを作成します。

cd ~/project
touch opePractice.go

その中に次のコードを書きます。

package main

import "fmt"

func main() {
    a := 10
    b := 3
    fmt.Println("a =", a, "b =", b)
    fmt.Println("-----")

    // 加算、減算、乗算
    fmt.Println("a + b =", a+b)
    fmt.Println("a - b =", a-b)
    fmt.Println("b - a =", b-a)
    fmt.Println("a * b =", a*b)

    // 除算
    // Go言語では、整数を除算する場合、切り捨てられます。
    fmt.Println("a / b =", a/b)
    // ただし、浮動小数点数を除算する場合は、そのような問題はありません。
    fmt.Println("10.0 / 3 =", 10.0/3)

    // 剰余算:一般的な形式
    fmt.Println("a % b =", a%b)
    // 負の数を使った剰余算
    // 計算方法:余り = 被除数 - (被除数 / 除数) * 除数
    fmt.Println("10 % -3 =", 10%-3)
    fmt.Println("-10 % 3 =", -10%3)
    fmt.Println("-10 % -3 =", -10%-3)
}

コードを実行し、負の余りの計算方法に特に注意してください。

cd ~/project
go run opePractice.go
a = 10 b = 3
-----
a + b = 13
a - b = 7
b - a = -7
a * b = 30
a / b = 3
10.0 / 3 = 3.3333333333333335
a % b = 1
10 % -3 = 1
-10 % 3 = -1
-10 % -3 = -1

インクリメント演算子とデクリメント演算子

Go言語では、++(インクリメント)と--(デクリメント)は独立した文であり、独立してのみ使用できます。演算子ではありません。

次のコードは誤りです。

var a int = 5
var i int = 0
a = i++ // 誤った使用方法。インクリメントは独立してのみ使用できます
a = i-- // 誤った使用方法。デクリメントは独立してのみ使用できます
a = ++i // 誤った使用方法。Go言語には前置インクリメントはありません
a = --i // 誤った使用方法。Go言語には前置デクリメントはありません

正しい構文は次の通りです。

var i = 0
i++
i++
fmt.Println(i)

opePractice.go に次のコードを書きます。

コードを完成させます。インクリメント演算子を使って変数 i の値を変更し、変数 a の値が 16 になるようにします。

package main

import "fmt"

func main() {
    var a int = 15
    var i int = 0
    /* 以下にコードを記述 */

    a = a + i
    fmt.Println(a)
    // コードを完成させて、aの出力が16になるようにします
}
✨ 解答を確認して練習

比較演算子

比較演算子とは何か。

比較演算子は比較の一種で、2つの値の関係を表します。2つの値が等しいか、一方が他方より大きいか小さいかを判断します。

演算子 関係
== 等しい
!= 等しくない
> より大きい
>= 以上
< より小さい
<= 以下

上記の演算子は、条件が成立する場合は true を返し、それ以外の場合は false を返します。

opePractice.go に次のコードを書きます。

package main

import "fmt"

func main() {
    // 比較演算子の使用
    var a int = 7
    var b int = 6
    // 等しいかどうかを確認
    fmt.Println(a == b)  //false
    // 等しくないかどうかを確認
    fmt.Println(a!= b)  //true
    // aがbより大きいかどうかを確認
    fmt.Println(a > b)   //true
    // aがb以上であるかどうかを確認
    fmt.Println(a >= b)  //true
    // aがbより小さいかどうかを確認
    fmt.Println(a < b)   //false
    // aがb以下であるかどうかを確認
    fmt.Println(a <= b)  //false
    // 1が1と等しいかどうかを確認
    judgeValue := 1 == 1 //true
    fmt.Println(judgeValue)
}

コードを実行します。

cd ~/project
go run opePractice.go

上記のコードでは、変数 ab に基づいて比較を行いました。

学生は変数の値を変更して比較結果を変え、比較演算子をより深く理解することができます。

論理演算子

論理演算子とは何か。

論理演算子は、比較演算子の高度な形態です。主に比較演算子を組み合わせて、さらなる評価に使用されます。

演算子 関係 説明
&& かつ 両オペランドが true の場合、結果は true
|| または どちらかのオペランドが true の場合、結果は true
! ではない 条件が false の場合、結果は true

opePractice.go に次のコードを書きます。

package main

import (
    "fmt"
)

func main() {
    // 論理積演算子 && の示し方
    var age int = 18
    if age > 15 && age < 30 {
        fmt.Println("Age is between 15 and 30")
    }
    if age > 30 && age < 80 {
        fmt.Println("Age is between 30 and 80")
    }
    // 論理和演算子 || の示し方
    if age > 15 || age < 30 {
        fmt.Println("Age is greater than 15 or less than 30")
    }
    if age > 30 || age < 40 {
        fmt.Println("Age is greater than 30 or less than 40")
    }
    // 論理否定演算子! の示し方
    if age > 30 {
        fmt.Println("Age is greater than 30")
    }
    if!(age > 30) {
        fmt.Println("Age is not greater than 30")
    }
}

上記のコードでは、変数 age の値が 18 であることに基づいて、一連の論理評価を行いました。

コードを実行します。

cd ~/project
go run opePractice.go

学生は、年齢変数の値を変更してコードを実行し、出力の変化を観察することができます。

論理演算子の実行順序

論理積と論理和演算子を使用する際、Go言語は演算子の両側のブール値を判断する必要があります。しかし、どちらの側が最初に評価されるのでしょうか。

一緒にこれを調べてみましょう。

opePractice.go に次のコードを書きます。

package main

import "fmt"

func leftFunc(flag bool) bool {
    fmt.Println("Left function is called!")
    return flag
}

func rightFunc(flag bool) bool {
    fmt.Println("Right function is called!")
    return true
}

func main() {
    if leftFunc(true) && rightFunc(true) {
        fmt.Println("Evaluation is complete")
    }
}

コードを実行します。

cd ~/project
go run opePractice.go
Left function is called!
Right function is called!
Evaluation is complete

論理積演算では、左オペランドが最初に評価され、その後右オペランドが評価されることがわかります。

論理和演算はどうでしょうか。opePractice.go に次のコードを書きます。

package main

import "fmt"

func leftFunc(flag bool) bool {
    fmt.Println("Left function is called!")
    return flag
}

func rightFunc(flag bool) bool {
    fmt.Println("Right function is called!")
    return true
}

func main() {
    if leftFunc(true) || rightFunc(true) {
        fmt.Println("Logical OR evaluation is complete")
    }
}

コードを実行します。

cd ~/project
go run opePractice.go
Left function is called!
Logical OR evaluation is complete

論理積と論理和演算の評価順序はともに左から右です。

ただし、論理和演算では、左オペランドが true の場合、右オペランドは評価されません。

したがって、実際の開発では、論理和演算子の左側により真になりやすい条件を置くことで、プログラムの実行時間を短縮することができます。

代入演算子

以前の実験では、代入演算子を頻繁に使用してきました。代入演算子の核心機能は、式の値を代入演算子(=)の左辺のオペランドに代入することです。

左辺のオペランド:代入演算子(=)の左側の式または変数で、書き込み可能なもの。

実際の開発では、変数同士の加算や減算が必要なことがよくあります。

これまで学んだことを元に、次のようなコードを書くことができます。

x = x + 1

しかし、この種のコードは実際の開発で非常に一般的なため、短縮形を用意しています。

x += 1

同様に、一般的な代入演算子には以下のものがあります。

演算子 説明
= 基本的な代入演算子
+= 加算して代入
-= 減算して代入
*= 乗算して代入
/= 除算して代入
%= 剰余を求めて代入

opePractice.go に次のコードを書きます。

package main

import "fmt"

func main() {
    x := 11
    fmt.Println("xの初期値:", x)
    x += 5 // x = x + 5
    fmt.Println("x += 5の後の値:", x)
    x -= 5 // x = x - 5
    fmt.Println("x -= 5の後の値:", x)
    x *= 5 // x = x * 5
    fmt.Println("x *= 5の後の値:", x)
    x /= 5
    fmt.Println("x /= 5の後の値:", x)
    x %= 3
    fmt.Println("x %= 3の後の値:", x)
}

上記のコードでは、変数 x に初期値 11 を代入し、基本的な算術演算(加算、減算、乗算)、除算、剰余計算を行っています。

コードを実行します。

cd ~/project
go run opePractice.go

変数の値を変更して、代入演算子がどのように機能するかを確認することができます。

まとめ

この実験で学んだことを振り返りましょう。

  • 算術演算子の使い方
  • 比較演算子の使い方
  • 論理演算子の使い方
  • 代入演算子の使い方

この実験では、Go言語で演算子をどのように使用するかについて説明しました。様々な演算子とその使い方を示しました。