プログラミング言語には、いろいろな記号が使われます。これらの記号は演算子と呼ばれるもので。この章では、Go 言語の演算子について説明します。
= (イコール)は、プログラミング言語では、代入をあらわします。代入とは、演算子の左辺(左側)の変数に、演算子の右辺(右側)の値を与えることです。左辺の変数にもとからあった値は、右辺の値で、置きかわります。
var number int
number = 100 // numberの値は100
number = 200 // numberの値は200
算術演算子は、足し算、引き算、かけ算、わり算の四則演算と、わり算のあまりです。かけ算は *(アスタリスク)、わり算は /(スラッシュ)、わり算のあまりは %(パーセント)であらわします。
package main
func main() {
println(5 + 2) // 7 と表示されます
println(5 - 2) // 3 と表示されます
println(5 * 2) // 10 と表示されます
println(5 / 2) // 2 と表示されます
println(5 % 2) // 1 と表示されます
}
変数に値を代入する場合、a = a + 10 という代入もできます。変数 a の値に 10 を足した値を、変数 a に再代入するという意味になります。
このような代入をする場合には、複合代入演算子と呼ばれるものが使えます。
左辺の変数の値に、右辺の値を足した値を、左辺の変数に再代入します。
package main
func main() {
a := 5
b := 5
a = a + 2
b += 2
println(a) // 7 と表示されます
println(b) // 7 と表示されます
}
左辺の変数の値から、右辺の値を引いた値を、左辺の変数に再代入します。
package main
func main() {
a := 5
b := 5
a = a - 2
b -= 2
println(a) // 3 と表示されます
println(b) // 3 と表示されます
}
左辺の変数の値に、右辺の値をかけた値を、左辺の変数に再代入します。
package main
func main() {
a := 5
b := 5
a = a * 2
b *= 2
println(a) // 10 と表示されます
println(b) // 10 と表示されます
}
左辺の変数の値を、右辺の値でわった値を、左辺の変数に再代入します。
package main
func main() {
a := 5
b := 5
a = a / 2
b /= 2
println(a) // 2 と表示されます
println(b) // 2 と表示されます
}
左辺の変数の値を、右辺の値をわった後のあまりの値を、左辺の変数に再代入します。
package main
func main() {
a := 5
b := 5
a = a % 2
b %= 2
println(a) // 1 と表示されます
println(b) // 1 と表示されます
}
プログラミングでは変数の値を 1 だけ増やしたい場合や、1 だけ減らしたい場合がよくあります。そのような時に使えるのが ++ と -- のインクリメンターとデクリメンターです。
package main
func main() {
a := 5
b := 5
a++
b--
println(a) // 6 と表示されます
println(b) // 4 と表示されます
}
左辺の値と右辺の値を比較するのが比較演算子です。比較が正しければ true (真)、正しくなければ false(偽)という値が返ってきます。
package main
func main() {
// 左辺の値が、右辺より大きいかどうか
println(5 > 2) // true と表示されます
println(5 > 5) // false と表示されます
println(2 > 5) // false と表示されます
println() // 空行が表示されます
// 左辺の値が、右辺と同じか大きい(以上)かかどうか
println(5 >= 2) // true と表示されます
println(5 >= 5) // true と表示されます
println(2 >= 5) // false と表示されます
println() // 空行が表示されます
// 左辺の値が、右辺より小さい(未満)かどうか
println(5 < 2) // false と表示されます
println(5 < 5) // false と表示されます
println(2 < 5) // true と表示されます
println() // 空行が表示されます
// 左辺の値が、右辺と同じか小さい(以下)かどうか
println(5 <= 2) // false と表示されます
println(5 <= 5) // true と表示されます
println(2 <= 5) // true と表示されます
println() // 空行が表示されます
// 左辺の値が、右辺と等しいかどうか
println(5 == 2) // false と表示されます
println(5 == 5) // true と表示されます
println(2 == 5) // false と表示されます
println() // 空行が表示されます
// 左辺と値が、右辺と等しくないかどうか
println(5 != 2) // true と表示されます
println(5 != 5) // false と表示されます
println(1 != 5) // true と表示されます
}
複数の比較演算をつないだり、比較演算の返した値を反転させたりすることができます。
論理積またはANDと言います。
複数の比較演算が、すべて true だった場合に、全体の値として true を返します。
package main
func main() {
println(5 > 2 && 5 >= 2 && 5 != 2) // true と表示されます
println(true && true && true) // true と表示されます
println(true && true && false) // false と表示されます
}
論理和またはORと言います。
複数の比較演算のうち、どれかひとつだけでも true だった場合に、全体の値として true を返します。
package main
func main() {
println(5 > 2 || 5 == 2 && 5 < 2) // true と表示されます
println(true || false || false) // true と表示されます
println(false || false || false) // false と表示されます
}
否定またはNOTと言います。
論理演算の値を反転させます。
package main
func main() {
println(!(5 > 2)) // false と表示されます
println(!(5 < 2)) // true と表示されます
println(!(5 > 2 && 5 == 2 && 5 < 2)) // true と表示されます
println(!(5 > 2 || 5 == 2 || 5 < 2)) // false と表示されます
}