English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
演算子はどのプログラミング言語でも基本となります。したがって、演算子を使用しない場合、Go言語の機能は不完全です。演算子は操作数に対して異なる種類の演算を実行することができます。Go言語では、演算子の異なる機能に応じて分類できます:
これらはGo言語の操作数に対して算術/数学運算:
加法: “ +「+」運算子は二つの操作数を足します。例えば、x + y。
減法: “-「-」運算子は二つの操作数を引きます。例えば、x-y。
乘法: /*「*」運算子は二つの操作数を乗じます。例えば、x * y。
除法: //「/」運算子は最初の操作数を第二の操作数で割ります。例えば、x / y。
求模:最初の操作数を第二の操作数で割るとき、'%'運算子は余数を返します。例えば、x%y。
注意: -、+、!、&、*、<-和^も一元運算子と呼ばれるが、一元運算子の優先順位が高い。++和—運算子は文から来ており、それらは式ではありません。したがって、運算子の階層構造には含まれません。
package main import "fmt" func main() { p := 34 q := 20 // 加法 result1 := p + q fmt.Printf("計算結果 p + q = %d", result1) // 减法 result2 := p - q fmt.Printf("\n計算結果 p - q = %d", result2) // 乘法 result3 := p * q fmt.Printf("\n計算結果 p * q = %d", result3) // 除法 result4 := p / q fmt.Printf("\n計算結果 p / q = %d", result4) // 求模 result5 := p % q fmt.Printf("\n計算結果 p %% q = %d", result5) }
出力:
計算結果 p + q = 54 計算結果 p - q = 14 計算結果 p * q = 680 計算結果 p / q = 1 計算結果 p % q = 14
関係演算子は2つの値を比較するために使用されます。一つずつ見てみましょう:
「==」(等しい)演算子は2つの指定された操作数が等しいかどうかを確認します。等しい場合、trueを返します。それ以外の場合、falseを返します。例えば、5 == 5trueを返します。
「!=」(不等的)演算子は2つの指定された操作数が等しいかどうかを確認します。不等しい場合、trueを返します。それ以外の場合、falseを返します。それは'=='演算子の正のブール補完です。例えば、5!= 5falseを返します。
「>」(大きい)演算子は最初の操作数が2番目の操作数以上かどうかを確認します。以上の場合、trueを返します。それ以外の場合、falseを返します。例えば、6> 5trueを返します。
「<」(小さい)演算子は最初の操作数が2番目の操作数以下かどうかを確認します。以下の場合、trueを返します。それ以外の場合、falseを返します。例えば、6 <5falseを返します。
「>=」(大きいかつ等しい)演算子は最初の操作数が2番目の操作数以上かどうかを確認します。以上の場合、trueを返します。それ以外の場合、falseを返します。例えば、5>= 5trueを返します。
「<=」(小さいかつ等しい)演算子は最初の操作数が2番目の操作数以下かどうかを確認します。以下の場合、trueを返します。それ以外の場合、falseを返します。例えば、5 <= 5もtrueを返します。
package main import "fmt" func main() { p := 34 q := 20 // 「==」(等しい) result1 := p == q fmt.Println(result1) // 「!=」(不等的) result2 := p != q fmt.Println(result2) // 「<」(小さい) result3 := p < q fmt.Println(result3) // 「>」(大きい) result4 := p > q fmt.Println(result4) // 「>=」(大きいかつ等しい) result5 := p >= q fmt.Println(result5) // 「<=」(小さいかつ等しい) result6 := p <= q fmt.Println(result6) }
出力:
false true false true true false
これらは2つ以上の条件を統合するために使用されます/制約、または追加で考慮する元の条件の評価。
論理AND:考慮している2つの条件がどちらも満たされた場合、「&&」演算子はtrueを返します。それ以外の場合、falseを返します。例えば、aとbがどちらも真である場合(つまり非ゼロ)、a && bは真を返します。
論理和: 条件のうち1つ(または2つ)が満たされた場合、「||」演算子はtrueを返します。それ以外の場合、falseを返します。例えば、aまたはbのどちらかが真である場合(つまり非ゼロ)、|| bはtrueを返します。もちろん、aとbがどちらも真である場合、trueを返します。
論理否定: 満足条件に該当しない場合、「!」演算子はtrueを返します。それ以外の場合、falseを返します。例えば、aが偽である場合(つまりa = 0)、!aはtrueを返します。
package main import "fmt" func main() { var p int = 23 var q int = 60 if p != q && p <= q { fmt.Println("True") } if p != q || p <= q { fmt.Println("True") } if !(p == q) { fmt.Println("True") } }
出力:
True True True
Go言語では、6ビット演算子は、ビットごとに動作したり逐次操作に使用できます。以下にビット演算子を示します:
&(按位与):二つの数字を操作数として用いて、二つの数字の各ビットに対して「と」演算を実行します。二つのビットがどちらも1の場合、ANDの結果が1。
| (按位或):二つの数字を操作数として用いて、二つの数字の各ビットに対して「或」演算を実行します。二つのビットのいずれかが1、ORの結果は1。
^(按位XOR):二つの数字を操作数として用いて、二つの数字の各ビットに対してXORを実行します。もし二つのビットが異なる場合、XORの結果は1。
<<(左移):二つの数字を取って、最初の操作数のビットを左に移動し、第二の操作数が移動するビット数を決定します。
>>(右移):二つの数字を取って、最初の操作数のビットを右に移動し、第二の操作数が移動するビット数を決定します。
&^(AND NOT):(按位清除)演算子、この演算子の実際の操作は&(^)演算です。
package main import "fmt" func main() { p := 134 q := 320 // & (AND) result1 := p & q fmt.Printf("計算結果 p & q = %d", result1) // | (OR) result2 := p | q fmt.Printf("\n計算結果 p | q = %d", result2) // ^ (XOR) result3 := p ^ q fmt.Printf("\n計算結果 p ^ q = %d", result3) // << (左移) result4 := p << 1 fmt.Printf("\n計算結果 p << 1 = %d", result4) // >> (右移) result5 := p >> 1 fmt.Printf("\n計算結果 p >> 1 = %d", result5) // &^ (AND NOT) result6 := p &^ q fmt.Printf("\n計算結果 p &^ q = %d", result6) }
出力:
計算結果 p & q = 0 計算結果 p | q = 454 計算結果 p ^ q = 454 計算結果 p << 1 = 268 計算結果 p >> 1 = 67 計算結果 p &^ q = 134
変数に値を割り当てるための割り当て演算子です。割り当て演算子の左側の操作数は変数であり、割り当て演算子の右側の操作数は値です。右側の値は左側の変数と同じデータ型を持っている必要があり、そうでない場合、コンパイラはエラーを投げます。以下に示されるように、異なるデータ型の割り当て演算子があります:
「=」(単純代入)これは最も単純な代入演算子です。この演算子は右側の値を左側の変数に割り当てるために使用されます。
“ + =(加算代入)この演算子は+「および」および「=」演算子の組み合わせです。この演算子はまず左側の変数の現在の値を右側の値に「加算」して、結果を左側の変数に割り当てます。
“-=(減算代入)この演算子は-「および」および「=」演算子の組み合わせです。この演算子はまず右側の値から左側の変数の現在の値を「減算」して、結果を左側の変数に割り当てます。
“ * =(乗算代入)この演算子は*「および」および「=」演算子の組み合わせです。この演算子はまず左側の変数の現在の値を右側の値に「乗算」して、結果を左側の変数に割り当てます。
“ / 「=」(除算代入)この演算子は/「および」および「=」演算子の組み合わせです。この演算子はまず左側の変数の現在の値を右側の値で「除算」して、結果を左側の変数に割り当てます。
「%=」(模代入)この演算子は「%」および「=」演算子の組み合わせです。この演算子はまず左側の変数の現在の値を右側の変数に「乗算」して、結果を左側の変数に割り当てます。
「&=」(ビットでとる代入)この演算子は「&」および「=」演算子の組み合わせです。この演算子はまず左側の変数の現在の値を右側の変数と「ビットでとる」して、結果を左側の変数に割り当てます。
「^=」(ビットで異或)この演算子は「^」および「=」演算子の組み合わせです。この演算子はまず左側の変数の現在の値を右側の変数と「ビットで異或」して、結果を左側の変数に割り当てます。
「|=」(ビットで或る)この演算子は「|」および「=」演算子の組み合わせです。この演算子はまず左側の変数の現在の値を右側の値「ビットで或る」して、結果を左側の変数に割り当てます。
package main import "fmt" func main() { var p int = 38 var q int = 70 // 「=」(単純代入) p = q fmt.Println(p) // “+=(加算代入) p += q fmt.Println(p) //“-=(減算代入) p-=q fmt.Println(p) // “*=(乗算代入) p*= q fmt.Println(p) // “/=(除算代入) p /= q fmt.Println(p) // 「%=」(求模代入) p %= q fmt.Println(p) }
出力:
70 140 70 4900 70 0
&:この演算子は変数のアドレスを返します。
*:この演算子は変数へのポインタを提供します。
<-:この演算子の名前は受け取りです。チャンネルから値を受け取るために使用されます。
package main import "fmt" func main() { a := 94 //演算子(&)と //ポインタ間接(*)演算子 b := &a fmt.Println(*b) *b = 67 fmt.Println(a) }
出力:
94 67