Go is a programming language developed by [[Google]] in 2009 and released in 2012. [^01] It is sometimes called "golang", and Go developers are called "gophers".
## Key features
### [[Go is built with performance in mind]]
### [[Goroutines]]
- A special type of thread that is accessible by Go apps. A goroutine is a [[User-space thread]], not a [[Kernel thread]].
- Faster than kernel threads
- Take up less memory than kernel threads (about 2KB per stack, vs a kernel thread's 8KB)
### [[Go Scheduler]]
- Coordinates goroutines and how they're placed on kernel threads.
- Manages network I/O
- Enables hundreds of thousands of goroutines to run concurrently
- Triggers blocking system calls to stop both threads and goroutines, if necessary
- Engages garbage collection
- Go removes a few constructs from other languages like [[Java]] or [[Python]]:
![[Why Should You Learn Go#^29b4bf]]
## [[Installing Go]]
## [[g]] [[Package Manager]] for Go
## Programming in Go
[[Structs in Go]]
[[Pointers in Go]]
## Personal experiences with Go
- [[k6 (tool)]] is built on Go
- [[flood.io]]'s new environment infrastructure, as designed by [[Lachie Cox]], is written in Go.
[^01]: [Wikipedia](https://en.wikipedia.org/wiki/Go_(programming_language)#:~:text=Go%20was%20publicly%20announced%20in,organizations%20and%20open%2Dsource%20projects.)