JavaScript source code is read directly in the browser. Then executed at runtime.
No pre-compilation step required.
Sometimes there is an intermediary format such as bytecode.
Typically no precompilation steps that need to be followed.
A compiled language is transformed into something specific to an operating system.
C and C++ are good examples of compiled languages.
Go is compiled and statically typed language.
Therefore, its variables have specific types.
No need to always specifically declare the types.
Always known at compilation time.
Can feel like an interpreted language, because you can run a sourcecode file without the need to recompile.
In the background, a source file is being created in the background.
The compilation tool is also only known as Go.
Compiled executables are OS specific.
Applications built with Go have a statically linked run time.
Run-time component is compiled with the application.
No external Virtual Machine being used for the compilation.
For example with Java, application is compiled into bytecode and the JVM machine can then run that on the OS of choice.
Therefore the Runtime
Go is kind of Object-oriented.
Define custom interfaces.
Custom types can implement one or more interface .
Almost everything is a type in Go and every type uses an Interface.
Custom types can have member methods.
Custom structs (data structures) can have member fields.
Similars to classes in C# and Java.
Go does not support:
Type inheritance (no classes)
Can’t create a type and say that will be the super type and then create a subtype which can inherit features from the super type.
No Method or operator overloading.
Cannot have more than one method in a type that has the same name.
No Structured exception handling.
C and C# has this.
No try, catch or finally keywords.
Error objects are returned by functions, which might generate those errors.
Then you use conditional logic, to examine the error objects.
No Implicit numeric conversions. Must explicitly type every variable.
Must implicitly type it and say where you are getting the data from.
If you want to convert a value from one type to another in Go, must be done explicitly, by wrapping the function in a value that wants to be X type.
The main reason you cannot find these language features in Go, is because a lot of features are common in advanced languages, which ultimately make these languages harder to read and more susceptible to bugs.
Go was originally designed as a next-generation language for C.
This includes Systems Programming, Application Development and so on.
Borrows some syntax from C, as well as C++, C#, Java and more.
Borrows from Pascal, Modula and Oberon.
Don’t have to do as much typing in Go - characters are very precise.