Go Concepts - Operators: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
No edit summary
 
(61 intermediate revisions by the same user not shown)
Line 1: Line 1:
=Internal=
=TO DEPLETE=
* [[Go Concepts#Subjects|Go Concepts]]
<font color=darkkhaki>
 
=External=
 
* Go Specification - Operators: https://golang.org/ref/spec#Operators
 
=+=
 
Addition or concatenation. The compiler figures out the semantics based on the operands' types.
 
Applies to:
* [[Go Strings#Concatenation_Operator|strings]]
 
=-=
 
Subtraction
 
=<tt>&</tt>=
 
<tt>&</tt> is the reference operator. For more details see [[Go_Concepts_-_Lexical_Structure#Reference_and_Dereference_Operators|reference and dereference operators]].
 
=/=
 
Division
 
=%=
 
Remainder


= = =
= = =


The assignment operator.
The assignment operator.
= += =
Addition and assignment.


= == =
= == =


=Indexing Operator []=
The equality operator. Returns a boolean value.
 
Can be used to test [[Go_Strings#String_Equality|string equality]].


= := =
= := =


Variable declaration and assignment.
Short variable declaration operator. It does [[Go_Concepts_-_Lexical_Structure#Short_Variable_Declaration|variable declaration and assignment]] (initialization). The type of the variable is inferred from the right side expression.
 
= <- =
 
<tt><-</tt> is the left arrow operator. It is used to [[Go_Channels#Placing_an_Instance_on_the_Channel|send]] and [[Go_Channels#Reading_an_Instance_from_the_Channel|receive]] messages on channels.
 
=<tt>.</tt>=
 
<tt>.</tt> is used for ''field access'' and ''method calls'':
 
==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>
 
Also see [[Go_Structs#Fields|fields]]
 
==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;">
: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>
 
Also see [[Go_Concepts_-_Functions#Methods|methods]].
 
==Function Call==
 
Used to invoke a function from a package:
 
<pre>
fmt.Println(...)
</pre>
</font>

Latest revision as of 18:21, 24 August 2023

TO DEPLETE

External

+

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

Applies to:

-

Subtraction

&

& 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.

:=

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.

.

. is used for field access and method calls:

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.

Also see fields

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(),

Also see methods.

Function Call

Used to invoke a function from a package:

fmt.Println(...)