Go, also called golang, is a programming language initially developed at Google in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson.
It is a statically-typed language with syntax loosely derived from that of C, adding automatic memory management, type safety,
some dynamic-typing capabilities, additional built-in types such as variable-length arrays and key-value maps,
and a large standard library.
http://en.wikipedia.org/wiki/Go_%28programming_language%29
- Features of Go Programming
The most important features of Go programming are listed below −
Support for environment adopting patterns similar to dynamic languages. For example, type inference (x := 0 is valid declaration of a variable x of type int)
Compilation time is fast.
Inbuilt concurrency support: lightweight processes (via go routines), channels, select statement.
Go programs are simple, concise, and safe.
Support for Interfaces and Type embedding.
Production of statically linked native binaries without external dependencies.
Features Excluded Intentionally
Support for type inheritance
Support for method or operator overloading
Support for circular dependencies among packages
Support for pointer arithmetic
Support for assertions
Support for generic programming
You can use "vi", "vim" or any other text editor to write your Go program into a file
https://www.tutorialspoint.com/go/go_overview.htm
A text editor
Go compiler
https://www.tutorialspoint.com/go/go_environment.htm
- A Go program consists of various tokens.
In a Go program, the line separator key is a statement terminator.
A Go identifier is a name used to identify a variable, function, or any other user-defined item
Go does not allow punctuation characters such as @, $, and % within identifiers. Go is a case-sensitive programming language
Whitespaces separate one part of a statement from another and enables the compiler to identify where one element in a statement, such as int, ends and the next element begins
https://www.tutorialspoint.com/go/go_basic_syntax.htm
- On most of the operating systems, programs are not permitted to access memory at address 0 because that memory is reserved by the operating system. However, the memory address 0 has special significance; it signals that the pointer is not intended to point to an accessible memory location. But by convention, if a pointer contains the nil (zero) value, it is assumed to point to nothing.
https://www.tutorialspoint.com/go/go_pointers.htm
- Go Slice is an abstraction over Go Array. Go Array allows you to define variables that can hold several data items of the same kind but it does not provide any inbuilt method to increase its size dynamically or get a sub-array of its own. Slices overcome this limitation
If a slice is declared with no inputs, then by default, it is initialized as nil. Its length and capacity are zero.
https://www.tutorialspoint.com/go/go_slice.htm
- Recursion is the process of repeating items in a self-similar way. The same concept applies in programming languages as well. If a program allows to call a function inside the same function, then it is called a recursive function call.
https://www.tutorialspoint.com/go/go_recursion.htm
- Type casting is a way to convert a variable from one data type to another data type. For example, if you want to store a long value into a simple integer then you can type cast long to int. You can convert values from one type to another using the cast operator
https://www.tutorialspoint.com/go/go_type_casting.htm
- Go programming provides another data type called interfaces which represents a set of method signatures. The struct data type implements these interfaces to have method definitions for the method signature of the interfaces.
https://www.tutorialspoint.com/go/go_interfaces.htm