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
Name | Comment |
---|
Convert string to int | i, _ := strconv.ParseInt(“12345”, 10, 64) |
Convert string to int | i, err := strconv.Atoi(“-42”) |
Convert string to list | L := strings.Split(“hi,golang”, “”) |
Convert string to []byte | []byte('abcXX') |
Convert string to byte | byte(str1[]) |
Convert byte to string | string(byte('a'))= |
Convert string to float32 | f, _ := strconv.ParseFloat(“3.1415”, 32) |
Convert int to float32 | 0.5*float32(age)+7>= float32(age2) |
Convert int to string | s := strconv.Itoa(-42). Notice: not string(-42) |
Convert rune to string | string(rune1) |
Convert string list to string | strings.Join(list, ', ') |
Convert int list to string | fmt.Sprintf('%s', l) |
Convert list to byte | byteI := byte(65) |
Convert byte to int | int(byte('a')) |
Convert byte to string | string(byte('a')) |
Convert bytes to string | string([]byte('abcXX')) |
Convert int32 to int32 Pointer | func int32Ptr(i int32) *int32 { return &i } |
Convert string[] to string | strings.Join([]string{'a', 'b'}, ',') |
Format string | fmt.Sprintf('%.3f', float64(v)/1000) |
Format string | fmt.Sprintf('At %v, %s', e.When, e.What) |
Format string | fmt.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
Name | Comment |
---|
Golang goroutine |
How Golang implement defer | Execute 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 Model | Each 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 tuple | func dfs(root *TreeNode, max *float64) (sum int, cnt int) , LeetCode: Maximum Average Subtree |
Use strings.Builder, instead of string | LeetCode: Unique Email Addresses |
Variable Conversion | float64(x_int/y_int) != float64(x_int)/float64(y_int) , LeetCode: Maximum Average Subtree |
For a list of objects, pass by value or reference | f(l []*TreeNode) vs f(l *[]*TreeNode) , LeetCode: Lowest Common Ancestor of a Binary Tree |
1.3 Golang Quality Improvement Tools
Name | Comment |
---|
gosec | Golang security checker, gosec ./... |
golangci-lint | lint check, golint |
errcheck | errcheck checks that you checked errors, errcheck ./... |
delve | Delve is a debugger for the Go programming language. |
ginkgo | BDD Testing Framework for Go |
mock | GoMock is a mocking framework for Golang |
envtest | provides libraries for integration testing by starting a local control plane |
go-junit-report | Convert go test output to junit xml |
gocover-cobertura | go tool cover to XML (Cobertura) export tool |
gocovmerge | Merge coverprofile results from multiple go cover runs |
1.4 Golang Dependencies
Name | Comment |
---|
goimports | updates your Go import lines, adding missing ones and removing unreferenced ones |
dep | Go deps, now recommend go modules |
Install go dep | go get -u github.com/golang/dep/cmd/dep |
Go modules | export GO111MODULE=on, go mod download |
Initialize new module in current directory | go mod init XXX |
Download modules to local cache | go mod download |
Add missing and remove unused modules | go mod tidy |
Make vendored copy of dependencies | go mod vendor |
Reference | Link: Using Go Modules |
1.5 Golang Errors
Name | Comment |
---|
… does not support indexing | *variable[0] -> (*variable)[0] |
Scrabble Go Cheat Sheet
1.6 Golang Common
Name | Comment |
---|
Upgrade golang to 1.12 in mac | brew upgrade go , go version |
Reference | Link: The Go Programming Language Specification |
1.7 Golang Code Structure & Common Algorithms
Name | Comment |
---|
Online Go Playgroud | https://play.golang.org/ |
One line if statement | if a >= 1 { fmt.Print(“yes”) } |
Declare variables with initializers | var ischecked, v, str = false, 2, “yes!” |
goroutine | Define functions to run as distince subprocesses |
switch | code/example-switch.go |
queue | LeetCode: Number of Recent Calls |
bfs | code/tree-bfs.go |
trie tree | code/tree-trie.go |
1.8 Syntax Sugar: From Python To Golang
Name | Python | Golang |
---|
sum slice | sum([1, 2, 3]) | sum := 0; for i := range nums { sum += nums[i] } |
Get last item | nums[-1] | nums[len(nums)-1] |
For | for i in range(10): | for i := 0; i < 10; i++ |
Loop list | for num in [1, 2] | for num := range[]int{1, 2} { fmt.Print(num) } |
Loop string | for ch in str: | for _, ch := range str { fmt.Print(ch) } |
Iterator | for num in nums: | for _, num := range nums {fmt.Print(num)} |
While | while isOK: | for isOK |
Check ch range | ord(ch) in range(ord('a'), ord('z')+1) | ch >=’a’ && ch <=’z’ |
Get min | min(2, 6, 5) |
Check is nil | root is None | root nil |
Reverse list | nums[::-1] | Need to create your own function. Weird! |
1.9 Surprises In Golang
Name | Comment |
---|
Modulus returns negative numbers | In golang, -3 % 2 -1 |
1.10 Golang Array/List/Slice
Name | Comment |
---|
Make a array | var a [2]string; a[0]=”hello”; a[1]=”world” |
Create array with given values | l := [6]int{2, 3, 7, 5, 11, 13} |
Create array with given values | l := []string{“a”, “c”, “b”, “d”} |
Create dynamically-sized arrays | a := make([]int, 5) |
Create dynamically-sized arrays | a := make([]int, 1, 5) // 5 is capacity |
Sort string array | sort.Strings(l); fmt.Print(l) |
Sort int array | sort.Ints(l) //in-place change |
Golang sort one array by another array | LeetCode: Largest Values From Labels |
Sort in descending order | sort.Sort(sort.Reverse(sort.IntSlice(keys))) |
Append item | l = append(l, “e”) |
Append items | l = append(l, “e”, “b”, “c”) |
Append item to head/prepend | l = append([]string{'a'}, l...) |
Remove last item | l = l[:len(l)-1] |
Remove item by index | l = append(l[0:1], l[2:]...) |
Slices of a array | var l2 = l[1:3] // Notice: it’s a reference |
Copy a list | b := make([]int, len(a)); copy(b, a) |
Join two lists | l1 = append(l1, l2...) |
Use pointer of array list | code/pointer-array.go |
1.11 Golang String
Name | Comment |
---|
Format string | fmt.Sprintf('At %v, %s', e.When, e.What) |
Format string | fmt.Printf('int: %d, float: %f, bool: %tn', 123, 78.9, true) |
Padding zero | fmt.Printf('%02d:%02d', 2, 10) |
Split string | var L = strings.Split('hi,golang', ',') |
Replace string | var str2 = strings.Replace('hi,all', ',', ';', -1) |
Replace string | strings.Replace('aaaa', 'a', 'b', 2) //bbaa |
Split string by separator | strings.Split(path, ' ') |
Count characters | strings.Count('test', 't') |
Substring | strings.Index('test', 'e') |
Join string | strings.Join([]string{'a','b'}, '-') |
Repeat string | strings.Repeat('a', 2) // aa |
Lower string | strings.ToLower('TEST') |
Trim whitespace in two sides | strings.TrimSpace('t Hello world!n ') |
Trim trailing whitespace | strings.TrimRight('t Hello world!n ', 'n ') |
Concact string | fmt.Sprintf('%s%s', str1, str2) |
Reference | Link: package strings |
1.12 Golang Integer/Float
Name | Comment |
---|
Int max | MaxInt32 = 1<<31 – 1 golang math |
Int min | MinInt32 = -1 << 31 golang math |
Pass int as reference | sample code |
1.13 Golang Env
Name | Comment |
---|
GOPATH | It is called as the workspace directory for Go programs |
GOROOT | The location of your Go installation. No need to set any more |
go env | Show a full list of environment variables |
Reference | Link: GOPATH, GOROOT, GOBIN |
1.14 Golang Package management
Golang Pdf Book
Name | Comment |
---|
go mod | Link: go modules |
go get fix | GO111MODULE=off go get -fix ./... |
go mod replace url | go mod edit -replace… |
1.15 Golang Ascii
Name | Comment |
---|
get character ascii | byte('0') |
ascii offset | fmt.Println(string('B' + byte('a')-byte('A'))) |
1.16 Golang Dict/Hashmap/Map
Name | Comment |
---|
Create dict | map[string]int{'a': 1, 'b': 2} |
Create dict | make(map[string]int) |
Check existence | _, ok := m[k] |
Delete key | delete(m, 'k1') |
Create a map of lists | m := make(map[string][]string) |
Get keys of a map | Loop the dictionary and append the key to a list |
Use (x, y) as hashmap key | m[[2]int{2, 2}] = true, code/example-hashmap-arraykey.go |
Golang Cheat Sheet
1.17 Golang Networking
1.18 Golang Goroutines
Name | Comment |
---|
Basic goroutine | code/example-goroutine.go |
1.19 Golang Inteface
Name | Comment |
---|
Hash map with both key and value dynamic | map[interface{}]interface{} |
Define and use interface | code/example-interface.go |
Convert map[interface {}]interface {} to map[string]string | code/interface-conversion.go |
1.20 Golang Files & Folders
Name | Comment |
---|
Read files | code/example-read-file.go |
Write files | code/example-write-file.go |
1.21 Golang Math
Name | Comment |
---|
pow(2, 3) | int(math.Pow(2, 3)) // Default is float64 |
sqrt | math.Sqrt(100) |
Get rand | rand.Intn(100) , rand.Float64() |
1.22 Golang Bit Operator & Math
Name | Comment |
---|
Shift left | fmt.Print(1 << 10) // 1024 |
Shift right | fmt.Print(1024 >> 3) // 128 |
1.23 Golang BBD Testing
Name | Summary |
---|
ginkgo | BDD Testing Framework for Go http://onsi.github.io/ginkgo/ |
Ubuntu install ginkgo | apt-get install golang-ginkgo-dev |
gomega | Ginkgo’s Preferred Matcher Library |
Add tags to tests | // +build availability , go test -v --tags=availability ./test/e2e/... |
1.24 Golang Misc
Name | Comment |
---|
Golang sleep | time.Sleep(4* time.Second) |
Golang logging | import 'log' , log.Info , log.Print , log.Error(err) |
Golang print function name | runtime.Callers |
1.25 More Resources
License: Code is licensed under MIT License.
Common Data Structure Operations
Data Structure | Time Complexity | Space Complexity |
---|
Average | Worst | Worst |
---|
Access | Search | Insertion | Deletion | Access | Search | Insertion | Deletion |
---|
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 Table | N/A | Θ(1) | Θ(1) | Θ(1) | N/A | O(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 Tree | N/A | Θ(log(n)) | Θ(log(n)) | Θ(log(n)) | N/A | O(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 Tree | N/A | Θ(log(n)) | Θ(log(n)) | Θ(log(n)) | N/A | O(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
Algorithm | Time Complexity | Space Complexity |
---|
Best | Average | Worst | Worst |
---|
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) |