Go Concepts - Lexical Structure: Difference between revisions

From NovaOrdis Knowledge Base
Jump to navigation Jump to search
Line 5: Line 5:
=Source Files=
=Source Files=


Go code goes into source files. They have the <tt>.go</tt> extension. Each source file is declared to belong to a [[Go Concepts - Packages#Overview|package]].
Go code goes into source files. They have the <tt>.go</tt> extension.  
 
Each source file is mandatory declared to belong to a [[Go Concepts - Packages#Overview|package]].
 
They can then optionally import other packages, using the <tt>[[Go Keyword import|import]]</tt> keyword.


=Comments=
=Comments=

Revision as of 05:39, 22 March 2016

Internal

Source Files

Go code goes into source files. They have the .go extension.

Each source file is mandatory declared to belong to a package.

They can then optionally import other packages, using the import keyword.

Comments

// to the end of the line
/*
  Multiline
  line 1
  ...
  line n
*/

Whitespace

Whitespace in Go are carriage returns (u+000D), newlines (u+000A), spaces (u+0020) and tabs (u+0009).

Semicolons

TODO https://golang.org/ref/spec#Semicolons

Operators

Identifiers

Types, functions, constants, variables, interfaces.

The blank identifier "_".

Identifiers (not values) can be exported or unexported.

Lower-case letter identifiers

Upper-case letter identifiers


Expression

Operators combine operands into expressions.

Literal

String Literal

Numeric Literal

Array Literal

Slice Literal

Map Literal

Struct Literal

Statements

for

if

Keywords

range type func . .
package go . . .
defer chan import . .

Constants

Variables

Variables are always initialized to the type's zero value.


  var <var-name> <type> = <initial-value>

  var a string = "blah"


  <var-name> := <initial-value>

   a := "blah"

Variable Scopes

Package-level variable

Pass by Value vs Pass by Reference

In Go, all variables are passed by value. Even for pointer variables, since the value of the pointer is a memory address, passing pointer variables is still considered pass by value.

Pointers

Pointer variable.