Go is a programming language created in 2009 by Google employees Robert Griesemer, Rob Pike, and Ken Thompson. Go is a statically typed, compiled language in the tradition of C, with the added benefits of memory safety, garbage collection, structural typing, and CSP-style concurrency. The compiler, tools, and source code are all free and open source.
Why Go is Special?
From the initial stage of Go development they designed it for fast compiling. So it is hard to create a slow compiling program using Go.
We can list Go’s major features.
- Fast Results : It works like an interpreted language because of the fast compilation. You’ll not notice that it’s compiling. You’ll think that as if you’re working in an interpreted language like Ruby.
- Safe: Strongly and statically typed and garbage collected.
- Easy to Work With: It’s concise, explicit and easy to read.
- Modern: Built-in support in the language itself for multi-core networked distributed applications and more.
Go usage goes high in last few years.
- Caddy, an open source HTTP/2 web server with automatic HTTPS capability.
- CockroachDB, an open source, survivable, strongly consistent, scale-out SQL database.
- Decred, a cryptocurrency with on-chain governance integrated into its blockchain.
- Docker, a set of tools for deploying Linux containers
- Hugo, a static site generator
- InfluxDB, an open source database specifically to handle time series data with high availability and high performance requirements.
- InterPlanetary File System, a content-addressable, peer-to-peer hypermedia protocol.
- Juju, a service orchestration tool by Canonical, packagers of Ubuntu Linux
- Kubernetes container management system
- Lightning Network, a bitcoin network that allows for fast Bitcoin transactions and scalability.
- OpenShift, a cloud computing platform as a service by Red Hat
- Snappy, a package manager for Ubuntu Touch developed by Canonical.
- Syncthing, an open-source file synchronization client/server application
- Terraform, an open-source, multiple cloud infrastructure provisioning tool from HashiCorp.
Most notable companies are Google, Docker, Dropbox, Heroku, Medium, Lyft and Uber.
Disadvantages Of Go
- Strongly typed. Extremely typed, rather. Ninety nine times out of a hundred this might seem like a nuisance. But that one time when the compiler catches a type-mismatched assignment, where say, there would have been loss of precision in a different language, you’ll be glad that Go has such strict typing.
- Can be fully compiled and statically linked with all libraries into a single standalone executable binary.
- Excellent concurrency patterns. Be sure to look up Rob Pikes talk on this topic on YouTube. I could go on and on on this topic but I don’t think anyone can better Rob’s talk.
- To go along with the excellent concurrency patterns, Go offers several solutions to tackle the classical challenges of concurrent programming. E.g. there is automatic deadlock detection (a panic is issued.) Your application can be built using a race-condition detector, which is extremely useful during testing (can and should be disabled in production.)
- Garbage collected. When all references to an object have gone out of scope, the memory that was allocated for it is marked for GC and the OS is free to reclaim it.
- Offers pretty powerful profiling tools for CPU and memory utilization to easily fine tune your application.
- Programmers tend to easily procrastinate and often never get around to coding activities like testing and documentation. Go offers plenty of ways to automate these activities in practice. With all these, there really can’t be any excuses for not writing unit tests and API documentation for your code.
- There are a ton of programmers who have created production-worthy packages on top of the standard Go packages available on GitHub. E.g. drivers for MongoDB, Redis, MySQL, to name a few.
If you have a passion on Go Language, please follow this websites and tutorials.
Go Tour : https://tour.golang.org/welcome/1
Tutorials : https://www.tutorialspoint.com/go/
Youtube Playlist : https://www.youtube.com/playlist?list=PLQVvvaa0QuDeF3hP0wQoSxpkqgRcgxMqX