Go Concepts - Lexical Structure: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
|||
Line 76: | Line 76: | ||
=Constants= | =Constants= | ||
=Variables= | |||
Variables are always initialized to the type's [[#Zero_Value|zero value]]. | |||
<pre> | |||
var <var-name> <type> = <initial-value> | |||
var a string = "blah" | |||
</pre> | |||
<pre> | |||
<var-name> := <initial-value> | |||
a := "blah" | |||
</pre> | |||
==Variable Scopes== | |||
''Package-level variable'' | |||
==Pass by Value vs Pass by Reference== | |||
In Go, all variables ''are passed by value''. Even for [[#Pointers|pointer variables]], since the value of the pointer is a memory address, passing pointer variables is still considered pass by value. | |||
==Pointers== | |||
Pointer variable. |
Revision as of 00:05, 22 March 2016
Internal
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
Comment
// to the end of the line
/* Multiline line 1 ... line n */
Statements
for
if
Keywords
- Go Specification - Keywords: https://golang.org/ref/spec#Keywords
range | type | func | . | . |
package | go | . | . | . |
defer | chan | . | . | . |
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.