Go Language
External
- The Go Programming Language Specification https://go.dev/ref/spec
- go.dev Documentation https://go.dev/doc/#learning
Internal
Overview
Go Language Specification document defines Go as a general-purpose compiled language designed with systems programming in mind. It is statically and strongly typed and garbage-collected and has explicit support for concurrent programming. Programs are constructed from packages, whose properties allow efficient management of dependencies. The existing implementations use a traditional compile/link model to generate executable binaries.
Go declarations can be read "naturally" from left to right, which makes it easy to read.
These are several reasons to use Go:
- It compiles fast, and it runs fast
- Concurrency is a fundamental part of the language
- The standard library has almost everything one needs
- It is a terse language and "feels" dynamically typed, but it compiles straight into machine code
Variables
Scoping
Type
To deplete Go Concepts - The Type System
Go is a strongly and statically typed language with no implicit conversions. This gives Go a stronger type safety than Java, which as implicit conversions, but the code reads more like Python, which has untyped variables.
Modularization
In Go, programs are constructed from packages. More details:
Object Oriented Programming
Concurrency
Memory Management and Garbage Collection
TO DEPLETE and MERGE into THIS DOCUMENT
These are documents produced by the previous attempt. Process, merge into this document, and deplete:
- Go Concepts - Standard Library
- Go Concepts - Lexical Structure
- Go Concepts - Functions
- Go Concepts - Error Handling
- Go Concepts - Memory Model
- Go Concepts - Templates
- Go Concepts - Compiler
- Go Concepts - Limitations