Go: Operators
See Operator precedence for evaluation order.
Arithmetic
Operator | Name | Types |
---|---|---|
+ | sum | integers, floats, complex values, strings |
- | difference | integers, floats, complex values |
* | product | integers, floats, complex values |
/ | quotient | integers, floats, complex values |
% | remainder | integers |
& | bitwise AND | integers |
| | bitwise OR | integers |
^ | bitwise XOR | integers |
&^ | bit clear (AND NOT) | integers |
<< | left shift | integer << unsigned integer |
>> | right shift | integer >> unsigned integer |
See Arithmetic operators in the Go language specification for complete definitions of the shift, quotient and remainder operators, integer overflow, and floating point behavior.
Comparison
Comparison operators compare two operands and yield an untyped boolean value.
Operator | Name | Types |
---|---|---|
== | equal | comparable |
!= | not equal | comparable |
< | less | integers, floats, strings |
<= | less or equal | integers, floats, strings |
> | greater | integers, floats, strings |
>= | greater or equal | integers, floats, strings |
- Boolean, integer, floats, complex values and strings are comparable.
- Strings are ordered lexically byte-wise.
- Two pointers are equal if they point to the same variable or if both are nil.
- Two channel values are equal if they were created by the same call to make or if both are nil.
- Two interface values are equal if they have identical dynamic types and equal concrete values or if both are nil.
- A value x of non-interface type X and a value t of interface type T are equal if t's dynamic type is identical to X and t's concrete value is equal to x.
- Two struct values are equal if their corresponding non-blank fields are equal.
- Two array values are equal if their corresponding elements are equal.
Logical
Logical operators apply to boolean values. The right operand is evaluated conditionally.
Operator | Name | Description |
---|---|---|
&& | conditional AND | p && q denotes "if p then q else false" |
|| | conditional OR | p || q denotes "if p then true else q" |
! | NOT | !p denotes "not p" |
Others
Operator | Name | Description |
---|---|---|
& | address of | &x generates a pointer to x |
* | pointer indirection | *x denotes the variable pointed to by x |
<- | receive | <-ch is the value received from channel ch |
Comments
Be the first to comment!