演算子を使用してGoで数学を実行する方法

前書き

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

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

Goで最もよく使用される2つの数値https://www.digitalocean.com/community/tutorials/understanding-data-types-in-go [データタイプ]、_ integers floats_を使用します。

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

オペレータ

_operator_は、操作を示すシンボルまたは関数です。 たとえば、数学ではプラス記号または「+」は加算を示す演算子です。

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

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

Operation What it returns

x + y

Sum of x and y

x - y

Difference of x and y

-x

Changed sign of x

+x

Identity of x

x * y

Product of x and y

x / y

Quotient of x and y

x % y

Remainder of x / y

また、算術演算子と「+ = 」演算子を組み合わせる「+ = 」や「 * = +」などの複合代入演算子についても説明します。

加減

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

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

fmt.Println(1 + 5)
Output6

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

a := 88
b := 103

fmt.Println(a + b)
Output191

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

c := -36
d := 25

fmt.Println(c + d)
Output-11

加算はフロートでも同様に動作します。

e := 5.5
f := 2.5

fmt.Println(e + f)
Output8

2つのフロートを一緒に追加したため、Goは小数点以下の桁数のフロート値を返しました。 ただし、この場合、小数点以下の桁はゼロであるため、 `+ fmt.Println `は小数点形式を削除しました。 出力を適切にフォーマットするには、次の例のように、 ` fmt.Printf `と動詞 `%。2f +`を使用して、小数点以下2桁にフォーマットします。

fmt.Printf("%.2f", e + f)
Output8.00

減算の構文は加算の場合と同じですが、演算子をプラス記号( +)からマイナス記号( -)に変更します。

g := 75.67
h := 32.0

fmt.Println(g - h)
Output43.67

Goでは、同じ_data types_でのみ演算子を使用できます。 「+ int 」とhttps://www.digitalocean.com/community/tutorials/understanding-data-types-in-go#sizes-of-numeric-types [` float64 +`]を追加することはできません。

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

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

単項算術演算

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

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

i := 3.3
fmt.Println(+i)
Output3.3

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

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

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

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

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

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

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

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

乗算と除算

加算と減算のように、乗算と除算は数学での方法と非常によく似ています。 Goで乗算に使用する記号は「+ * 」で、除算に使用する記号は「 / +」です。

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

k := 100.2
l := 10.2

fmt.Println(k * l)
Output1022.04

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

整数を除算する場合、Goの「+ / +」演算子は下限除算を実行します。商* x に対して返される数値は、 x *以下の最大整数です。

次の「80 / 6」を分割する例を実行すると、出力として「13」を受け取り、データ型は「+ int +」になります。

package main

import (
   "fmt"
)

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

   fmt.Println(m / n)
}
Output13

目的の出力が浮動小数点数である場合、分割する前に値を明示的に変換する必要があります。

これを行うには、値の周りに希望のfloat型の `+ float32()`または ` float64()+`をラップします。

package main

import (
   "fmt"
)

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

モジュロ

`%`演算子は_modulo_で、除算後の商ではなく剰余を返します。 これは、同じ数の倍数である数を見つけるのに役立ちます。

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

o := 85
p := 15

fmt.Println(o % p)
Output10

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

`+ float64 `データ型でモジュラス計算を行うには、 ` math `パッケージの ` Mod +`関数を使用します。

package main

import (
   "fmt"

)

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

   s :=

   fmt.Println(s)
}
Output4

演算子の優先順位

Goでは、数学のように、演算子は左から右または右から左ではなく優先順位の順に評価されることに留意する必要があります。

次の数式を見ると:

u = 10 + 10 * 5

左から右に読むこともできますが、乗算が最初に行われるため、「+ u +」を出力すると、次の値を受け取ります。

Output60

これは、「+ 10 * 5+」が「50」に評価され、「+ 10+」を追加して「60」を最終結果として返すためです。

代わりに値「10」を「10」に追加し、その合計に「5」を掛けたい場合は、数学の場合と同様にGoで括弧を使用します。

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

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

Order Letter Stands for

1

P

Parentheses

2

E

Exponent

3

M

Multiplication

4

D

Division

5

A

Addition

6

S

Subtraction

  • BEDMAS BODMAS *など、操作の順序を表す別の頭字語に慣れている場合があります。 頭字語が最適な場合は、Goで数学演算を実行するときに、期待する結果が返されるように覚えておいてください。

割り当て演算子

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

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

w := 5
w += 1
fmt.Println(w)
Output6

まず、変数「+ 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)
   }

}
Output0
2
4
6
8
10
12

+ for +`ループを使用して `+ values +`というスライスを反復処理することにより、変数 `+ w +`に数値 `+2+を掛けた + * = + 演算子のプロセスを自動化することができました。 `そして、結果を変数 + w + `に割り当てます。

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

値を追加して割り当てるには:

y += 1

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

y -= 1

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

y *= 2

分割して値を割り当てるには:

y /= 3

残りを返すには、値を割り当てます。

y %= 3

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

結論

このチュートリアルでは、整数データ型と浮動数値データ型で使用する多くの演算子について説明しました。 さまざまなデータ型の詳細については、https://www.digitalocean.com/community/tutorials/understanding-data-types-in-go [Goのデータ型について]およびhttps://www.digitalocean.com/をご覧ください。 community / tutorials / how-to-to-data-types-in-go [データ型の変換方法]。