# Toán tử trong Go **1. Toán tử số học** Với A := 10 và B := 20
**\#** | **Operator** | **Description** | **Example** |
---|---|---|---|
1 | + | Phép cộng | A + B = 30 |
2 | - | Phép trừ | A - B = -10 |
3 | \* | Phép nhân | A \* B = 200 |
4 | / | Phép chia | B / A = 2 |
5 | % | Lấy phần dư | B % A = 0 |
6 | ++ | Tăng giá trị thêm 1 | A++ = 11 |
7 | -- | Giảm giá trị đi 1 | A-- = 9 |
**\#** | **Operator** | **Description** | **Example** |
---|---|---|---|
1 | == | So sánh bằng nhau | (A == B) is not true. |
2 | != | So sánh khác nhau | (A != B) is true. |
3 | > | So sánh lớn hơn | (A > B) is not true. |
4 | < | So sánh nhỏ hơn | (A < B) is true. |
5 | >= | So sánh lớn hơn hoặc bằng | (A >= B) is not true. |
6 | <= | So sánh nhỏ hơn hoặc bằng | (A <= B) is true. |
**\#** | **Operator** | **Description** | **Example** |
---|---|---|---|
1 | && | AND | (A && B) is false. |
2 | || | OR | (A || B) is true. |
3 | ! | NOT | !(A && B) is true. |
**\#** | **p** | **q** | **p & q** | **p | q** | **p ^ q** |
---|---|---|---|---|---|
1 | 0 | 0 | 0 | 0 | 0 |
2 | 0 | 1 | 0 | 1 | 1 |
3 | 1 | 1 | 1 | 1 | 0 |
4 | 1 | 0 | 0 | 1 | 1 |
**\#** | **Operator** | **Description** | **Example** |
---|---|---|---|
1 | & | Binary AND Operator copies a bit to the result if it exists in both operands. | (A & B) will give 12, which is 0000 1100 |
2 | | | Binary OR Operator copies a bit if it exists in either operand. | (A | B) will give 61, which is 0011 1101 |
3 | ^ | Binary XOR Operator copies the bit if it is set in one operand but not both. | (A ^ B) will give 49, which is 0011 0001 |
4 | << | Binary Left Shift Operator. The left operands value is moved left by the number of bits specified by the right operand. | A << 2 will give 240 which is 1111 0000 |
5 | >> | Binary Right Shift Operator. The left operands value is moved right by the number of bits specified by the right operand. | A >> 2 will give 15 which is 0000 1111 |
**\#** | **Operator** | **Description** | **Example** |
---|---|---|---|
1 | = | Simple assignment operator, Assigns values from right side operands to left side operand | C = A + B will assign value of A + B into C |
2 | += | Add AND assignment operator, It adds right operand to the left operand and assign the result to left operand | C += A is equivalent to C = C + A |
3 | -= | Subtract AND assignment operator, It subtracts right operand from the left operand and assign the result to left operand | C -= A is equivalent to C = C - A |
4 | \*= | Multiply AND assignment operator, It multiplies right operand with the left operand and assign the result to left operand | C \*= A is equivalent to C = C \* A |
5 | /= | Divide AND assignment operator, It divides left operand with the right operand and assign the result to left operand | C /= A is equivalent to C = C / A |
6 | %= | Modulus AND assignment operator, It takes modulus using two operands and assign the result to left operand | C %= A is equivalent to C = C % A |
7 | <<= | Left shift AND assignment operator | C <<= 2 is same as C = C << 2 |
8 | >>= | Right shift AND assignment operator | C >>= 2 is same as C = C >> 2 |
9 | &= | Bitwise AND assignment operator | C &= 2 is same as C = C & 2 |
10 | ^= | bitwise exclusive OR and assignment operator | C ^= 2 is same as C = C ^ 2 |
11 | |= | bitwise inclusive OR and assignment operator | C |= 2 is same as C = C | 2 |
**\#** | **Operator** | **Description** | **Example** |
---|---|---|---|
1 | & | Returns the address of a variable. | &a; provides actual address of the variable. |
2 | \* | Pointer to a variable. | \*a; provides pointer to a variable. |
**\#** | **Category** | **Operator** | **Associativity** |
---|---|---|---|
1 | Postfix | () \[\] -> . ++ - - | Left to right |
2 | Unary | + - ! ~ ++ - - (type)\* & sizeof | Right to left |
3 | Multiplicative | \* / % | Left to right |
4 | Additive | + - | Left to right |
5 | Shift | << >> | Left to right |
6 | Relational | < <= > >= | Left to right |
7 | Equality | == != | Left to right |
8 | Bitwise AND | & | Left to right |
9 | Bitwise XOR | ^ | Left to right |
10 | Bitwise OR | | | Left to right |
11 | Logical AND | && | Left to right |
12 | Logical OR | || | Left to right |
13 | Conditional | ?: | Right to left |
14 | Assignment | = += -= \*= /= %=>>= <<= &= ^= |= | Right to left |
15 | Comma | , | Left to right |