Go Concepts - Operators: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 76: Line 76:


Used for:
Used for:
* ''field access'': access of a <tt>struct</tt>'s fields.
 
* ''method call'': invoke a method on the ''instance'' of the type the [[Go_Concepts_-_Functions#Method_Invocation|method]] is associated with, or on the ''pointer'' to an instance of the type the method is associated with.
==Field Access==
 
Used to access of a <tt>struct</tt>'s fields.
 
<blockquote style="background-color: Gold; border: solid thin Goldenrod;">
:When used for field access, <tt>.</tt> can be used both with a struct value or a pointer to that struct value. In both situations it has the same semantics.
</blockquote>
 
==Method Call==
 
Used to invoke a method on the ''instance'' of the type the [[Go_Concepts_-_Functions#Method_Invocation|method]] is associated with, or on the ''pointer'' to an instance of the type the method is associated with.


<blockquote style="background-color: Gold; border: solid thin Goldenrod;">
<blockquote style="background-color: Gold; border: solid thin Goldenrod;">
:When designating a method call, <tt>.</tt> can be used both with a value or a pointer. In both situations it has the same semantics. If <tt>ptr</tt> is a pointer, then <tt>ptr.m()</tt> is a shorthand for <tt>(&ptr).m()</tt>,
:When designating a method call, <tt>.</tt> can be used both with a value or a pointer. In both situations it has the same semantics. If <tt>ptr</tt> is a pointer, then <tt>ptr.m()</tt> is a shorthand for <tt>(&ptr).m()</tt>,
</blockquote>
</blockquote>

Revision as of 19:37, 12 April 2016

External

Internal

+

Addition or concatenation. The compiler figures out the semantics based on the operands' types.

Applies to:

-

Subtraction

*

* is the multiplication operator.

As "address operator", * is used with pointers as dereference operator. For more details see reference and dereference operators.

* designates pointer types.

&

& is the reference operator. For more details see reference and dereference operators.

/

Division

%

Remainder

=

The assignment operator.

+=

Addition and assignment.

==

The equality operator. Returns a boolean value.

Can be used to test string equality.

[]

"[]" is the indexing operator. If the index is out of bounds, the runtime generates a run-time panic:

panic: runtime error: index out of range

Applies to:

:=

Short variable declaration operator. It does variable declaration and assignment (initialization). The type of the variable is inferred from the right side expression.

<-

<- is the left arrow operator. It is used to send and receive messages on channels.

.

Used for:

Field Access

Used to access of a struct's fields.

When used for field access, . can be used both with a struct value or a pointer to that struct value. In both situations it has the same semantics.

Method Call

Used to invoke a method on the instance of the type the method is associated with, or on the pointer to an instance of the type the method is associated with.

When designating a method call, . can be used both with a value or a pointer. In both situations it has the same semantics. If ptr is a pointer, then ptr.m() is a shorthand for (&ptr).m(),