/*
&: This operator returns the address of the variable.
*: This operator provides pointer to a variable.
<-:The name of this operator is receive. It is used to receive a value from the channel.
*/
/*
With the help of short variable declaration operator(:=) you can only declare the local variable which has only block-level scope. Generally, local variables are declared inside the function block. If you will try to declare the global variables using the short declaration operator then you will get an error.
*/
/*
In Go language, the select statement is just like switch statement, but in the select statement, case statement refers to communication, i.e. sent or receive operation on the channel.
In select statement, if multiple cases are ready to proceed, then one of them can be selected randomly.
If a select statement does not contain any case statement, then that select statement waits forever.
*/
/*
But for sending pointers or reference like a slice, map, etc. through a channel are not safe because the value of pointers or reference may change by sending goroutine or by the receiving goroutine at the same time and the result is unpredicted. So, when you use pointers or references in the channel you must make sure that they can only access by the one goroutine at a time.
*/
/*
Chennels works excetly like sockets, It blocks current excution when you Read or Write operation till Read opration completes.
*/