Go Concepts - Lexical Structure

From NovaOrdis Knowledge Base
Revision as of 05:15, 22 March 2016 by Ovidiu (talk | contribs) (→‎Package)
Jump to navigation Jump to search

Internal

Source Files

Go code goes into source files. Each source file is declared to belong to a package.

Comments

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

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


Whitespace

Newlines, spaces and tabs.

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.