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.)