Go Concepts - Functions: Difference between revisions
Line 50: | Line 50: | ||
The built-in functions are available by default, without the need to import any package. They are what the specification calls [[Go Concepts - Lexical Structure#Pre-Declared_Identifiers|pre-defined function identifiers]]. Their semantics depends on the arguments. | The built-in functions are available by default, without the need to import any package. They are what the specification calls [[Go Concepts - Lexical Structure#Pre-Declared_Identifiers|pre-defined function identifiers]]. Their semantics depends on the arguments. | ||
<blockquote style="background-color: #f9f9f9; border: solid thin lightgrey;"> | |||
* Length and capacity [[go Built-In Function len|len()]] [[go Built-In Function cap|cap()]] | |||
* <tt>[[go Built-In Function close|close()]]</tt> | |||
* Allocation: <tt>[[go Built-In Function new|new()]]</tt> | |||
* Making slices, maps and channels: <tt>[[go Built-In Function make|make()]]</tt>. | |||
</blockquote> | |||
{| | {| | ||
| | | || [[go Built-In Function append|append()]] || [[go Built-In Function copy|copy()]] || [[go Built-In Function delete|delete()]] || . | ||
|- | |- | ||
| | | || || || . || . | ||
|- | |- | ||
| . || . || . || . || . | | . || . || . || . || . |
Revision as of 18:45, 22 March 2016
External
- Function type specification https://golang.org/ref/spec#Function_types
Internal
Function Definition
A function declaration starts with the func keyword and it consists in a series of statements applied on a number of inputs, resulting in a number of outputs. Same inputs will always result in the same outputs. Function do not depend on a type instance's state. From this perspective, functions are conceptually different from methods.
Syntax
func <name>( [parameter-identifier1] [type1], [parameter-identifier2] [type2], ...) [( <return-type1>, [return-type2], ...)] { // function's body statement1 statement2 ... return <return-value1>, <return-value2> }
The return type declarations are optional, if the function does not return anything.
A function may return one or more results.
Examples:
func add(a int, b int) (int) { return a + b; }
Function Literals
The main() Function
Built-in Functions
The built-in functions are available by default, without the need to import any package. They are what the specification calls pre-defined function identifiers. Their semantics depends on the arguments.
append() | copy() | delete() | . | |
. | . | |||
. | . | . | . | . |
Closures
Anonymous function that capture local variables.
More about closures is available here.
Methods
A method defines the behavior of a type, and it relies on the state of an instance of the type. The method will - and it is supposed to - change the state. From this point of view, the method is conceptually different from a function.
A method is always exported by the package it is enclosed in.
Syntax
func <receiver> <method-name> (...) { // the rest of declaration is similar to a function's ... }