Go Cheat Sheet




Know Thy Complexities! This webpage covers the space and time Big-O complexities of common algorithms used in Computer Science. When preparing for technical interviews in the past, I found myself spending hours crawling the internet putting together the best, average, and worst case complexities for search and sorting algorithms so that I wouldn't be stumped when asked about them. The photos you provided may be used to improve Bing image processing services. View or Download the cheat sheet PDF file. Download the cheat sheet PDF file here. When it opens in a new browser tab, simply right click on the PDF and navigate to the download menu. What’s included in this cheat sheet. The following categories and items have been included in the cheat sheet: Operators. List of Pokemon GO Cheats, Tips & Strategies players use currently to Level Up Fast in Pokemon. We also have included some tricks many players use to find Pokemon locations. All of these cheats are harmless and are meant to help players achieve more out of their game-play experience.

  • PDF Link: cheatsheet-golang-A4.pdf, Category: languages
  • Blog URL: https://cheatsheet.dennyzhang.com/cheatsheet-golang-A4
  • Related posts: Ruby CheatSheet, Python CheatSheet, #denny-cheatsheets

File me Issues or star this repo.

1.1 Golang Conversion

NameComment
Convert string to inti, _ := strconv.ParseInt(“12345”, 10, 64)
Convert string to inti, err := strconv.Atoi(“-42”)
Convert string to listL := strings.Split(“hi,golang”, “”)
Convert string to []byte[]byte('abcXX')
Convert string to bytebyte(str1[])
Convert byte to stringstring(byte('a'))=
Convert string to float32f, _ := strconv.ParseFloat(“3.1415”, 32)
Convert int to float320.5*float32(age)+7>= float32(age2)
Convert int to strings := strconv.Itoa(-42). Notice: not string(-42)
Convert rune to stringstring(rune1)
Convert string list to stringstrings.Join(list, ', ')
Convert int list to stringfmt.Sprintf('%s', l)
Convert list to bytebyteI := byte(65)
Convert byte to intint(byte('a'))
Convert byte to stringstring(byte('a'))
Convert bytes to stringstring([]byte('abcXX'))
Convert int32 to int32 Pointerfunc int32Ptr(i int32) *int32 { return &i }
Convert string[] to stringstrings.Join([]string{'a', 'b'}, ',')
Format stringfmt.Sprintf('%.3f', float64(v)/1000)
Format stringfmt.Sprintf('At %v, %s', e.When, e.What)
Format stringfmt.Printf('int: %d, float: %f, bool: %tn', 123, 78.9, true)

1.2 Deep Dive Into Golang

  • Go’s original target was networked system infrastructure, what we now call cloud software
NameComment
Golang goroutine
How Golang implement deferExecute a piece of code before a function returns with FILO mechanism
How Golang implement timer
Golang for vs loop
Garbage Colection
Golang CSP vs Erlang Actor ModelEach actor model, which actor has its own queue
How Golang channel feature is implement?YouTube: GopherCon 2017: Understanding Channels, Link: Golang Channel
Golang return a tuplefunc dfs(root *TreeNode, max *float64) (sum int, cnt int), LeetCode: Maximum Average Subtree
Use strings.Builder, instead of stringLeetCode: Unique Email Addresses
Variable Conversionfloat64(x_int/y_int) != float64(x_int)/float64(y_int), LeetCode: Maximum Average Subtree
For a list of objects, pass by value or referencef(l []*TreeNode) vs f(l *[]*TreeNode), LeetCode: Lowest Common Ancestor of a Binary Tree

1.3 Golang Quality Improvement Tools

Go Cheat Sheet
NameComment
gosecGolang security checker, gosec ./...
golangci-lintlint check, golint
errcheckerrcheck checks that you checked errors, errcheck ./...
delveDelve is a debugger for the Go programming language.
ginkgoBDD Testing Framework for Go
mockGoMock is a mocking framework for Golang
envtestprovides libraries for integration testing by starting a local control plane
go-junit-reportConvert go test output to junit xml
gocover-coberturago tool cover to XML (Cobertura) export tool
gocovmergeMerge coverprofile results from multiple go cover runs

1.4 Golang Dependencies

NameComment
goimportsupdates your Go import lines, adding missing ones and removing unreferenced ones
depGo deps, now recommend go modules
Install go depgo get -u github.com/golang/dep/cmd/dep
Go modulesexport GO111MODULE=on, go mod download
Initialize new module in current directorygo mod init XXX
Download modules to local cachego mod download
Add missing and remove unused modulesgo mod tidy
Make vendored copy of dependenciesgo mod vendor
ReferenceLink: Using Go Modules

1.5 Golang Errors

Sheet
NameComment
… does not support indexing*variable[0] -> (*variable)[0]

Scrabble Go Cheat Sheet

1.6 Golang Common

NameComment
Upgrade golang to 1.12 in macbrew upgrade go, go version
ReferenceLink: The Go Programming Language Specification

1.7 Golang Code Structure & Common Algorithms

NameComment
Online Go Playgroudhttps://play.golang.org/
One line if statementif a >= 1 { fmt.Print(“yes”) }
Declare variables with initializersvar ischecked, v, str = false, 2, “yes!”
goroutineDefine functions to run as distince subprocesses
switchcode/example-switch.go
queueLeetCode: Number of Recent Calls
bfscode/tree-bfs.go
trie treecode/tree-trie.go

1.8 Syntax Sugar: From Python To Golang

NamePythonGolang
sum slicesum([1, 2, 3])sum := 0; for i := range nums { sum += nums[i] }
Get last itemnums[-1]nums[len(nums)-1]
Forfor i in range(10):for i := 0; i < 10; i++
Loop listfor num in [1, 2]for num := range[]int{1, 2} { fmt.Print(num) }
Loop stringfor ch in str:for _, ch := range str { fmt.Print(ch) }
Iteratorfor num in nums:for _, num := range nums {fmt.Print(num)}
Whilewhile isOK:for isOK
Check ch rangeord(ch) in range(ord('a'), ord('z')+1)ch >=’a’ && ch <=’z’
Get minmin(2, 6, 5)
Check is nilroot is Noneroot nil
Reverse listnums[::-1]Need to create your own function. Weird!

1.9 Surprises In Golang

NameComment
Modulus returns negative numbersIn golang, -3 % 2 -1
Go Cheat Sheet

1.10 Golang Array/List/Slice

NameComment
Make a arrayvar a [2]string; a[0]=”hello”; a[1]=”world”
Create array with given valuesl := [6]int{2, 3, 7, 5, 11, 13}
Create array with given valuesl := []string{“a”, “c”, “b”, “d”}
Create dynamically-sized arraysa := make([]int, 5)
Create dynamically-sized arraysa := make([]int, 1, 5) // 5 is capacity
Sort string arraysort.Strings(l); fmt.Print(l)
Sort int arraysort.Ints(l) //in-place change
Golang sort one array by another arrayLeetCode: Largest Values From Labels
Sort in descending ordersort.Sort(sort.Reverse(sort.IntSlice(keys)))
Append iteml = append(l, “e”)
Append itemsl = append(l, “e”, “b”, “c”)
Append item to head/prependl = append([]string{'a'}, l...)
Remove last iteml = l[:len(l)-1]
Remove item by indexl = append(l[0:1], l[2:]...)
Slices of a arrayvar l2 = l[1:3] // Notice: it’s a reference
Copy a listb := make([]int, len(a)); copy(b, a)
Join two listsl1 = append(l1, l2...)
Use pointer of array listcode/pointer-array.go

1.11 Golang String

NameComment
Format stringfmt.Sprintf('At %v, %s', e.When, e.What)
Format stringfmt.Printf('int: %d, float: %f, bool: %tn', 123, 78.9, true)
Padding zerofmt.Printf('%02d:%02d', 2, 10)
Split stringvar L = strings.Split('hi,golang', ',')
Replace stringvar str2 = strings.Replace('hi,all', ',', ';', -1)
Replace stringstrings.Replace('aaaa', 'a', 'b', 2) //bbaa
Split string by separatorstrings.Split(path, ' ')
Count charactersstrings.Count('test', 't')
Substringstrings.Index('test', 'e')
Join stringstrings.Join([]string{'a','b'}, '-')
Repeat stringstrings.Repeat('a', 2) // aa
Lower stringstrings.ToLower('TEST')
Trim whitespace in two sidesstrings.TrimSpace('t Hello world!n ')
Trim trailing whitespacestrings.TrimRight('t Hello world!n ', 'n ')
Concact stringfmt.Sprintf('%s%s', str1, str2)
ReferenceLink: package strings

1.12 Golang Integer/Float

NameComment
Int maxMaxInt32 = 1<<31 – 1 golang math
Int minMinInt32 = -1 << 31 golang math
Pass int as referencesample code

1.13 Golang Env

NameComment
GOPATHIt is called as the workspace directory for Go programs
GOROOTThe location of your Go installation. No need to set any more
go envShow a full list of environment variables
ReferenceLink: GOPATH, GOROOT, GOBIN

1.14 Golang Package management

Golang Pdf Book

NameComment
go modLink: go modules
go get fixGO111MODULE=off go get -fix ./...
go mod replace urlgo mod edit -replace…

1.15 Golang Ascii

NameComment
get character asciibyte('0')
ascii offsetfmt.Println(string('B' + byte('a')-byte('A')))

1.16 Golang Dict/Hashmap/Map

NameComment
Create dictmap[string]int{'a': 1, 'b': 2}
Create dictmake(map[string]int)
Check existence_, ok := m[k]
Delete keydelete(m, 'k1')
Create a map of listsm := make(map[string][]string)
Get keys of a mapLoop the dictionary and append the key to a list
Use (x, y) as hashmap keym[[2]int{2, 2}] = true, code/example-hashmap-arraykey.go

Golang Cheat Sheet

1.17 Golang Networking

1.18 Golang Goroutines

NameComment
Basic goroutinecode/example-goroutine.go

1.19 Golang Inteface

NameComment
Hash map with both key and value dynamicmap[interface{}]interface{}
Define and use interfacecode/example-interface.go
Convert map[interface {}]interface {} to map[string]stringcode/interface-conversion.go

1.20 Golang Files & Folders

Go Cheat Sheet
NameComment
Read filescode/example-read-file.go
Write filescode/example-write-file.go

1.21 Golang Math

NameComment
pow(2, 3)int(math.Pow(2, 3)) // Default is float64
sqrtmath.Sqrt(100)
Get randrand.Intn(100), rand.Float64()

1.22 Golang Bit Operator & Math

NameComment
Shift leftfmt.Print(1 << 10) // 1024
Shift rightfmt.Print(1024 >> 3) // 128

1.23 Golang BBD Testing

NameSummary
ginkgoBDD Testing Framework for Go http://onsi.github.io/ginkgo/
Ubuntu install ginkgoapt-get install golang-ginkgo-dev
gomegaGinkgo’s Preferred Matcher Library
Add tags to tests// +build availability, go test -v --tags=availability ./test/e2e/...

1.24 Golang Misc

NameComment
Golang sleeptime.Sleep(4* time.Second)
Golang loggingimport 'log', log.Info, log.Print, log.Error(err)
Golang print function nameruntime.Callers

1.25 More Resources

License: Code is licensed under MIT License.


Common Data Structure Operations

Data StructureTime ComplexitySpace Complexity
AverageWorstWorst
AccessSearchInsertionDeletionAccessSearchInsertionDeletion
ArrayΘ(1)Θ(n)Θ(n)Θ(n)O(1)O(n)O(n)O(n)O(n)
StackΘ(n)Θ(n)Θ(1)Θ(1)O(n)O(n)O(1)O(1)O(n)
QueueΘ(n)Θ(n)Θ(1)Θ(1)O(n)O(n)O(1)O(1)O(n)
Singly-Linked ListΘ(n)Θ(n)Θ(1)Θ(1)O(n)O(n)O(1)O(1)O(n)
Doubly-Linked ListΘ(n)Θ(n)Θ(1)Θ(1)O(n)O(n)O(1)O(1)O(n)
Skip ListΘ(log(n))Θ(log(n))Θ(log(n))Θ(log(n))O(n)O(n)O(n)O(n)O(n log(n))
Hash TableN/AΘ(1)Θ(1)Θ(1)N/AO(n)O(n)O(n)O(n)
Binary Search TreeΘ(log(n))Θ(log(n))Θ(log(n))Θ(log(n))O(n)O(n)O(n)O(n)O(n)
Cartesian TreeN/AΘ(log(n))Θ(log(n))Θ(log(n))N/AO(n)O(n)O(n)O(n)
B-TreeΘ(log(n))Θ(log(n))Θ(log(n))Θ(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)
Red-Black TreeΘ(log(n))Θ(log(n))Θ(log(n))Θ(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)
Splay TreeN/AΘ(log(n))Θ(log(n))Θ(log(n))N/AO(log(n))O(log(n))O(log(n))O(n)
AVL TreeΘ(log(n))Θ(log(n))Θ(log(n))Θ(log(n))O(log(n))O(log(n))O(log(n))O(log(n))O(n)
KD TreeΘ(log(n))Θ(log(n))Θ(log(n))Θ(log(n))O(n)O(n)O(n)O(n)O(n)

Array Sorting Algorithms

AlgorithmTime ComplexitySpace Complexity
BestAverageWorstWorst
QuicksortΩ(n log(n))Θ(n log(n))O(n^2)O(log(n))
MergesortΩ(n log(n))Θ(n log(n))O(n log(n))O(n)
TimsortΩ(n)Θ(n log(n))O(n log(n))O(n)
HeapsortΩ(n log(n))Θ(n log(n))O(n log(n))O(1)
Bubble SortΩ(n)Θ(n^2)O(n^2)O(1)
Insertion SortΩ(n)Θ(n^2)O(n^2)O(1)
Selection SortΩ(n^2)Θ(n^2)O(n^2)O(1)
Tree SortΩ(n log(n))Θ(n log(n))O(n^2)O(n)
Shell SortΩ(n log(n))Θ(n(log(n))^2)O(n(log(n))^2)O(1)
Bucket SortΩ(n+k)Θ(n+k)O(n^2)O(n)
Radix SortΩ(nk)Θ(nk)O(nk)O(n+k)
Counting SortΩ(n+k)Θ(n+k)O(n+k)O(k)
CubesortΩ(n)Θ(n log(n))O(n log(n))O(n)