Go Concepts - Lexical Structure: Difference between revisions
Line 9: | Line 9: | ||
Each source file is mandatory declared to belong to a [[Go Concepts - Packages#Overview|package]]. | 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. | They can then optionally import code from other packages, using the <tt>[[Go Keyword import|import]]</tt> keyword. | ||
=Comments= | =Comments= |
Revision as of 05:40, 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 code from 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
- Go Specification - Keywords: https://golang.org/ref/spec#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.