序章

プログラミングでは数字が一般的です。 これらは、画面サイズの寸法、地理的な場所、お金とポイント、ビデオで経過する時間、ゲームアバターの位置、数値コードの割り当てによる色などを表すために使用されます。

プログラミングで数学演算を効果的に実行することは、数値を扱う頻度が高いため、開発するための重要なスキルです。 数学の高度な理解は確かにあなたがより良いプログラマーになるのを助けることができますが、それは前提条件ではありません。 数学のバックグラウンドがない場合は、数学を、達成したいことを達成するためのツールとして、そして論理的思考を向上させる方法として考えてみてください。

Goで最もよく使用される2つの数値データ型整数およびフロートを使用します。

  • 整数は、正、負、または0(…、 -1, 0, 1、…)。
  • Floats は、次のように小数点を含む実数です。 9.0 また -2.25

このチュートリアルでは、Goの数値データ型で使用できる演算子を確認します。

オペレーター

演算子は、操作を示す記号または関数です。 たとえば、数学ではプラス記号または + 加算を示す演算子です。

Goでは、数学から引き継がれたおなじみの演算子がいくつか表示されます。 ただし、使用する他の演算子は、コンピュータープログラミングに固有のものです。

これは、Goの数学関連の演算子のクイックリファレンステーブルです。 このチュートリアルでは、次のすべての操作について説明します。

手術 それが返すもの
x + y の合計 xy
x - y の違い xy
-x の符号を変更しました x
+x のアイデンティティ x
x * y の製品 xy
x / y の商 xy
x % y の残り x / y

また、次のような複合代入演算子についても説明します。 +=*=、算術演算子と = オペレーター。

加減

Goでは、加算演算子と減算演算子は数学の場合と同じように実行されます。 実際、Goプログラミング言語を計算機として使用できます。

整数から始めて、いくつかの例を見てみましょう。

fmt.Println(1 + 5)
Output
6

整数を直接に渡す代わりに fmt.Println ステートメントでは、次のような構文を使用して、整数値を表すように変数を初期化できます。

a := 88
b := 103

fmt.Println(a + b)
Output
191

整数は正の数と負の数の両方(および0も)である可能性があるため、正の数で負の数を追加できます。

c := -36
d := 25

fmt.Println(c + d)
Output
-11

加算はfloatでも同様に動作します。

e := 5.5
f := 2.5

fmt.Println(e + f)
Output
8

2つのfloatを足し合わせたため、Goは小数点以下の桁数のfloat値を返しました。 ただし、この場合、小数点以下はゼロなので、 fmt.Println 10進数のフォーマットを削除しました。 出力を適切にフォーマットするために、 fmt.Printf と動詞 %.2f、次の例のように、小数点以下2桁にフォーマットされます。

fmt.Printf("%.2f", e + f)
Output
8.00

減算の構文は加算の構文と同じですが、演算子をプラス記号(+)マイナス記号(-):

g := 75.67
h := 32.0

fmt.Println(g - h)
Output
43.67

Goでは、同じデータ型でのみ演算子を使用できます。 追加することはできません int およびfloat64

i := 7
j := 7.0
fmt.Println(i + j)
Output
i + j (mismatched types int and float64)

同じではないデータ型で演算子を使用しようとすると、コンパイラエラーが発生します。

単項算術演算

単一の数式は、1つのコンポーネントまたは要素のみで構成されます。 Goでは、プラス記号とマイナス記号を値と組み合わせた単一の要素として使用して、次のことができます。値のIDを返す(+)、または値の符号を変更します(-).

一般的には使用されませんが、プラス記号は値のIDを示します。 正の値でプラス記号を使用できます。

i := 3.3
fmt.Println(+i)
Output
3.3

負の値でプラス記号を使用すると、その値のIDも返されます。この場合、負の値になります。

j := -19
fmt.Println(+j)
Output
-19

負の値の場合、プラス記号は同じ負の値を返します。

ただし、マイナス記号は値の符号を変更します。 したがって、正の値を渡すと、値の前のマイナス記号が負の値を返すことがわかります。

k := 3.3
fmt.Println(-k)
Output
-3.3

または、負の値でマイナス記号の単項演算子を使用すると、正の値が返されます。

j := -19
fmt.Println(-j)
Output
19

プラス記号とマイナス記号で示される単項算術演算は、次の場合に値のIDを返します。 +i、または値の反対の符号 -i.

乗算と除算

足し算と引き算のように、掛け算と割り算は数学の場合と非常によく似ています。 Goで乗算に使用する記号は次のとおりです。 * 除算に使用する記号は /.

Goで2つのfloat値を使用して乗算を行う例を次に示します。

k := 100.2
l := 10.2

fmt.Println(k * l)
Output
1022.04

Goでは、除算する数値タイプに応じて除算の特性が異なります。

整数を除算する場合、Goは / 演算子はフロア分割を実行します。商xの場合、返される数値はx以下の最大の整数です。

次の分割例を実行すると 80 / 6、あなたは受け取るでしょう 13 出力とデータ型は次のようになります int:

package main

import (
	"fmt"
)

func main() {
	m := 80
	n := 6

	fmt.Println(m / n)
}
Output
13

目的の出力がfloatの場合は、除算する前に値を明示的に変換する必要があります。

これを行うには、目的のフロートタイプをラップします。 float32() また float64() あなたの価値観の周り:

package main

import (
	"fmt"
)

func main() {
	s := 80
	t := 6
	r := float64(s) / float64(t)
	fmt.Println(r)
}
Output
13.333333333333334

モジュロ

The % 演算子はモジュロで、除算後の商ではなく余りを返します。 これは、同じ数の倍数である数を見つけるのに役立ちます。

モジュロの例を見てみましょう。

o := 85
p := 15

fmt.Println(o % p)
Output
10

これを分解するには、 85 で割った 15 の商を返します 5 残りの 10. 私たちのプログラムは値を返します 10 ここでは、モジュロ演算子が除算式の余りを返すためです。

モジュラス計算を行うには float64 データ型の場合は、 Mod からの機能 math パッケージ:

package main

import (
	"fmt"
	"math"
)

func main() {
	q := 36.0
	r := 8.0

	s := math.Mod(q, r)

	fmt.Println(s)
}
Output
4

演算子の優先順位

Goでは、数学と同様に、演算子は左から右または右から左ではなく、優先順位に従って評価されることに注意する必要があります。

次の数式を見ると、次のようになります。

u = 10 + 10 * 5

左から右に読むこともできますが、乗算が最初に行われるので、印刷する場合は u、次の値を受け取ります。

Output
60

それの訳は 10 * 5 に評価します 50、次に追加します 10 戻る 60 最終結果として。

代わりに値を追加したい場合 1010、次にその合計に 5、数学の場合と同じように、Goでは括弧を使用します。

u := (10 + 10) * 5
fmt.Println(u)
Output
100

操作の順序を覚える1つの方法は、頭字語PEMDASを使用することです。

注文 手紙 を意味する
1 P 括弧
2 E 指数
3 M 乗算
4 D 分割
5 A 添加
6 S 減算

BEDMASBODMASなど、操作の順序の別の頭字語に精通している場合があります。 頭字語が最も効果的である場合は、Goで数学演算を実行するときに頭字語を覚えて、期待する結果が返されるようにしてください。

代入演算子

最も一般的な代入演算子は、すでに使用している演算子です。等号 =. The = 代入演算子は、右側の値を左側の変数に割り当てます。 例えば、 v = 23 整数の値を割り当てます 23 変数に v.

プログラミング時には、変数の値に対して演算を実行し、結果の新しい値をその変数に割り当てる複合代入演算子を使用するのが一般的です。 これらの複合演算子は、算術演算子と = オペレーター。 したがって、追加のために結合します += 複合演算子を取得するには +=. それがどのように見えるか見てみましょう:

w := 5
w += 1
fmt.Println(w)
Output
6

まず、変数を設定します w の値に等しい 5、次に使用します += 左の変数の値に右の数値を加算し、その結果をに割り当てる複合代入演算子 w.

複合代入演算子は、次の場合に頻繁に使用されます。 for ループ。プロセスを数回繰り返す場合に使用します。

package main

import "fmt"

func main() {

	values := []int{0, 1, 2, 3, 4, 5, 6}

	for _, x := range values {

		w := x

		w *= 2

		fmt.Println(w)
	}

}
Output
0 2 4 6 8 10 12

を使用して for と呼ばれるスライスを反復処理するループ values、あなたはのプロセスを自動化することができました *= 変数を乗算した演算子 w 数で 2 次に、結果を変数に割り当てます w.

Goには、このチュートリアルで説明する算術演算子ごとに複合代入演算子があります。

追加してから値を割り当てます。

y += 1

減算してから値を割り当てるには:

y -= 1

乗算してから値を割り当てるには:

y *= 2

除算してから値を割り当てます。

y /= 3

余りを返すには、次の値を割り当てます。

y %= 3

複合代入演算子は、物事を段階的に増減する必要がある場合、またはプログラム内の特定のプロセスを自動化する必要がある場合に役立ちます。

結論

このチュートリアルでは、整数および浮動小数点の数値データ型で使用する多くの演算子について説明しました。 さまざまなデータ型の詳細については、Goのデータ型についておよびデータ型の変換方法を参照してください。