A 'Function' in Go is a chunk of Code that is used to conduct a particular task. And that chunk is only executed when it is called.
Say if you want to add two numbers, you can have an add 'Function' that would be dedicated to add the numbers.
Similarly, if you want to divide two numbers, you can have a divide 'Function' that would divide the numbers.
So, instead of placing all the codes in a single place. You can distribute the work among different 'Functions'. So, that your code looks more structured and clean.
Below are the rules to create a Function :
func myfunction() { fmt.Println("This is my first function") }
And thats how we define a 'Function'.
But it was mentioned in the 'Function' description that a 'Function' only executes only when it is called.
So, how a 'Function' is called?
Let us see in the below example.
package main import "fmt" func main() { myfunction() } func myfunction() { fmt.Println("This is my first function") }
So, in the above code, there are two parts,
func myfunction() { fmt.Println("This is my first function") }
So, in the above code we have defined a 'Function', 'myfunction()'. You can give any name to the 'Function'(In this case we have given the name 'myfunction()'). Just don't forget to write the 'func' keyword before it.
func myfunction() { fmt.Println("This is my first function") }
And the work of the 'Function', 'myfunction()' is, just to print 'This is my first function'.
Now, just remember one thing, the above 'Function', 'myfunction()' will never execute until it is called.
And thus we have called the 'Function', 'myfunction()' from main().
And the 'Function', 'myfunction()' is called, printing,
Although, the 'Function', 'myfunction()' is defined in the first line in the code.
def myfunction(): print("This is my first function")
But it will never be executed. Go will ignore the the above 'Function' definition.
And come to the next line, where it finds the 'Function', 'myfunction()' is called.
func main() { myfunction() }
And only then the Function executes.
Now, let us look at another example of adding two numbers and returning the result using 'Functions'.
package main import "fmt" func main() { first_num := 5 second_num := 4 value := add(first_num, second_num) fmt.Println("The added result is :",value) } func add(first_number int, second_number int) int { result := first_number + second_number return result }
Let us explain the above example with a practical scenario.
Say you are given a task of adding two numbers. And you would follow the below steps to achieve it :
So far, we have seen how a 'Function' works. Now, let us see who is the caller?
When the program execution begins,
And we initialise the first variable 'first_num' with the value '5'.
Then in the next line, we have initialised the second variable 'second_num' with the value '4'.
Then we call the 'add(first_num, second_num)' Function.
And Go searches for a Function with two arguments.
When it finds the Function, it assigns the value of 'first_num' to 'first_number' and 'second_num' to 'second_number'. And expects a value in return.
And gets into the block of the 'def add(first_number, second_number):' Function.
This is where the numbers are added,
And the result is stored in a variable 'result'.
And in the next line we 'return' the added value(i.e. 'result').
And the returned value goes back to the line, where the Function was called.
And the variable 'value' gets the added result(i.e. '9') from the variable 'result'.
And in the next line the added value is printed as output.