Go는 다음과 같은 산술 연산자를 지원해요:
| 연산자 | 예시 |
|---|---|
+ |
4 + 6 == 10 |
- |
15 - 10 == 5 |
* |
2 * 3 == 6 |
/ |
13 / 3 == 4 |
% |
13 % 3 == 1 |
정수 나눗셈에서는 나머지가 버려져요 (예: 5 / 2 == 2).
+ 연산자는 문자열을 이어 붙이기도 해요: "foo" + "bar" == "foobar".
Go는 서로 다른 숫자 타입 사이의 산술 연산을 허용하지 않아요:
x := 42
n := 2.0
value := n * x // invalid operation: n * x (mismatched types float64 and int)
피연산자는 같은 타입이어야 하고, 때로는 명시적인 변환이 필요해요:
x := float64(42)
n := 2.0
value := n * x
각 연산자에는 변수를 제자리에서 갱신하는 축약 대입 형태가 있어요:
a := 1
a += 2 // same as a = a + 2 == 3
b := 2
b -= 2 // same as b = b - 2 == 0
c := 4
c *= 2 // same as c = c * 2 == 8
d := 8
d /= 2 // same as d = d / 2 == 4
e := 16
e %= 2 // same as e = e % 2 == 0
변수 뒤에 오면 증가(++)와 감소(--) 문은 변수에 저장된 숫자 값을 1만큼 늘리거나 줄여요. 변수 앞에 두면 문법 오류예요.
a := 10
a++ // same as a += 1, a == 11
b := 10
b-- // same as b -= 1, b == 9
이들은 문이기 때문에 값을 반환하지 않아요.