-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[PUBLISHER] Publish from Obsidian #50
- Loading branch information
1 parent
047e4e3
commit a461dad
Showing
1 changed file
with
28 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
--- | ||
title: Golang | ||
description: Learning and possibly mastering the Go programming Language | ||
tags: | ||
alias: | ||
- Go | ||
- Go programming Language | ||
publish: true | ||
--- | ||
**Go**, also referred to as **Golang** is a programming language developed by Google in 2007. It's designed for simplicity, performance, and concurrency. Go has a *built-in concurrency model* with goroutines and channels. It includes a *garbage collector* for *automatic memory management*. Go is popular for building *high-performance systems* and *network applications*. Go modules is the *built-in package manager* for dependency management. Go is a great option for developers who want to build *fast*, *efficient*, and *scalable* systems. | ||
|
||
## History of Golang | ||
|
||
The development of Golang started in 2007. The language was first announced publicly in November 2009 and was officially released in March 2012. Go was created by a team of three developers at Google, *Robert Griesemer*, *Rob Pike*, and *Ken Thompson*, with the goal of creating a new programming language that was more productive, efficient, and scalable than existing languages. Go was designed to address some of the limitations of other programming languages, such as slow compilation times, verbose syntax, and lack of support for concurrency. The language was also designed to be *easy to learn and use*, with a *minimalist syntax* and a *focus on simplicity*. | ||
|
||
Go's development was heavily influenced by other programming languages, particularly C, Pascal, and the programming language Alef, which was also developed by Rob Pike and others at Bell Labs in the 1980s. Go's development has been *guided by an open source community*, with contributions from many developers around the world. The language has seen rapid adoption, particularly in the field of *cloud computing*, *distributed systems* and *DevOps*. Today, Go is used by many major companies, including Google, Uber, Dropbox, and Netflix, among others. Go continues to evolve, with new releases and updates bringing new features and improvements to the language. The language has gained a reputation for being fast, efficient, and easy to use, and is increasingly seen as a viable alternative to other popular programming languages such as Python, Ruby, and Java. | ||
|
||
## Why Golang? | ||
|
||
The syntax of Golang is influenced by C, but it also includes features from other programming languages, such as Pascal and Modula-2. Here are some key features of the Golang syntax: | ||
|
||
1. **Simple and readable** - The syntax of Golang is designed to be simple and readable, with a minimal amount of keywords and syntax. This makes it easy for developers to understand and maintain code. | ||
2. **Statically typed** - Golang is a statically typed language, which means that variable types are declared at compile time. This helps to catch errors early in the development process. | ||
3. **Package-based** - Golang organizes code into packages, which are collections of functions, types, and variables. Packages can be imported and used by other packages, making it easy to reuse code and manage dependencies. | ||
4. **Pointers** - Golang includes pointers, which are variables that hold the memory address of another variable. Pointers are used to create more efficient code and to allow for direct manipulation of memory. | ||
5. **Concurrency support** - Golang includes built-in support for concurrency through goroutines and channels. Goroutines are lightweight threads that allow for parallel execution of code, while channels provide a safe and efficient way to share data between concurrent processes. | ||
6. **Garbage collection** - Golang includes a garbage collector that automatically manages memory, freeing developers from having to worry about manual memory management. | ||
7. **Error handling** - Golang includes a built-in error handling system, which makes it easy to handle and propagate errors throughout a program. |