Skip to content
Switch branches/tags
Go to file

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

1 Golang CheatSheet


PRs Welcome

File me Issues or star this repo.

1.1 Golang Conversion

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: %t\n", 123, 78.9, true)

1.2 Deep Dive Into Golang

  • Go’s original target was networked system infrastructure, what we now call cloud software
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 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

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

goimportsupdates your Go import lines, adding missing ones and removing unreferenced ones
depGo deps, now recommend go modules
Install go depgo get -u
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

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

1.6 Golang Common

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

1.7 Golang Code Structure & Common Algorithms

Online Go Playgroud
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
queueLeetCode: Number of Recent Calls
trie treecode/tree-trie.go

1.8 Syntax Sugar: From Python To Golang

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

Modulus returns negative numbersIn golang, -3 % 2 == -1

1.10 Golang Array/List/Slice

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

Format stringfmt.Sprintf("At %v, %s", e.When, e.What)
Format stringfmt.Printf("int: %d, float: %f, bool: %t\n", 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

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

1.13 Golang Env

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

1.14 Golang Package management

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

1.15 Golang Ascii

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

1.16 Golang Dict/Hashmap/Map

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

1.17 Golang Networking

golang httpcode/example-http.go

1.18 Golang Goroutines

Basic goroutinecode/example-goroutine.go

1.19 Golang Inteface

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

Read filescode/example-read-file.go
Write filescode/example-write-file.go

1.21 Golang Math

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

1.22 Golang Bit Operator & Math

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

1.23 Golang BBD Testing

ginkgoBDD Testing Framework for Go
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

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.

linkedin github slack


No releases published


No packages published