Working with Functions in Go
In Go, the function is a set of statements that performs a specific task and can be reused repeatedly in a program. Functions improve the readability and maintainability of a program.
A function can take input parameters and can also return an output. Input parameters and output are optional to a function.
Every Go program will have at least one function main()
function which is the starting point.
func functionName ([inputParameters]) [returnType] {
//function body
}
A function in Go is declared using the func
keyword followed by the function name. Input parameters can be passed to a function which is optional. A function can return one or more values. In the above syntax, returnType
is the data type of the return values. It's not mandatory to return a value, in that case, the returnType
is not required. The function body is a set of executable statements that performs a specific task.
The following example defines the greet()
function:
func greet() {
fmt.Println ("Hello World")
}
In the above example, a function greet() is defined using the func
keyword. The opening curly brace {
indicates the beginning of the function. It should be placed in the same line as the function name declaration and not in a separate line. The closing curly brace indicates the end of the function.
The above greet()
function does not take any input parameter and does not return any value. The function body contains single statement.
The function does not get executed automatically. It has to be explicitly called by using the function name followed by parenthesis e.g. greet()
.
A function can be called one or more times from any other functions.
package main
import "fmt"
func greet() {
fmt.Println ("Hello World")
}
func main() {
greet() // calling the greet function
}
Hello World
Function with Input Parameters and Return Value
In the following example, a function called Sum is declared which accepts two values as input parameters and returns the total of the two values.
package main
import "fmt"
func Sum (x int, y int) int {
return x + y
}
func main() {
result := Sum(5, 10)
fmt.Println (result)
}
15
In the above program, the Sum
function takes two integers parameters, x and y. It computes the sum of these two integers and returns the result to the calling function.
Multiple Return Values
A function can return multiple values of different data types. For example the following function returns two integer values.
package main
import "fmt"
func SumAndSubtract (x int, y int) (int, int) {
sum := x + y
sub:= x – y
return sum, sub
}
func main() {
sum,subtract := SumAndSubtract(10, 5)
fmt.Println(sum, subtract)
}
15 5
A function can return multiple values of different data types.
package main
import "fmt"
func GetDefaults() (int, string) {
return 0, "unknown"
}
func main() {
id, name := GetDefaults()
fmt.Println(id, name)
}
0 unknown
Naming Conventions for Functions
- A function name must start with a letter.
- A function name cannot contain spaces.
- It can contain only alphanumeric characters and underscore.
- Function names are case sensitive, e.g.
Greet()
andgreet()
are two different functions.