All Projects β†’ dennyzhang β†’ cheatsheet-golang-A4

dennyzhang / cheatsheet-golang-A4

Licence: other
πŸ“– Advanced Golang Syntax In A4

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to cheatsheet-golang-A4

ffmpeg-cheatsheet
πŸ“Ό A cheatsheet for common video processing operations in FFmpeg
Stars: ✭ 153 (+206%)
Mutual labels:  cheatsheet
function-composition-cheatsheet
Composition of Functions
Stars: ✭ 24 (-52%)
Mutual labels:  cheatsheet
MySQL-cheatsheet
Cheatsheet for MySQL
Stars: ✭ 43 (-14%)
Mutual labels:  cheatsheet
fe-store-house
The front-end resource that gathered in my working days.
Stars: ✭ 95 (+90%)
Mutual labels:  cheatsheet
android-convention-cheatsheet
Android Naming Convention Cheat Sheet
Stars: ✭ 52 (+4%)
Mutual labels:  cheatsheet
cheatsheet-python-A4
πŸ“– Advanced Python Syntax In A4
Stars: ✭ 96 (+92%)
Mutual labels:  denny-cheatsheets
vue-unit-testing-cheat-sheet
πŸ”¬ My cheat sheet for testing vue components with jest and vue-test-utils
Stars: ✭ 101 (+102%)
Mutual labels:  cheatsheet
cheatsheets
ropensci cheatsheets
Stars: ✭ 23 (-54%)
Mutual labels:  cheatsheet
tidal-cheat-sheet
A cheat sheet for Tidal, a language for live coding patterns
Stars: ✭ 38 (-24%)
Mutual labels:  cheatsheet
typescript-cheatsheet
Cheatsheet for TypeScript.
Stars: ✭ 28 (-44%)
Mutual labels:  cheatsheet
Nextflow cheatsheet
Tips for Nextflow and cheatsheet for channel operation
Stars: ✭ 38 (-24%)
Mutual labels:  cheatsheet
gdb-cheatsheet
GDB cheatsheet for reversing binaries
Stars: ✭ 20 (-60%)
Mutual labels:  cheatsheet
cheatsheet-generator
Generates cheatsheets for your (favourite) apps
Stars: ✭ 49 (-2%)
Mutual labels:  cheatsheet
FSharpCheatSheet
Reference sheet of the basics of F# ^_^
Stars: ✭ 20 (-60%)
Mutual labels:  cheatsheet
cheat-sheets
Cheat sheets to help you in daily hands-on tasks of trouble shooting, configuration, and diagnostics with Fortinet, HP/Aruba, Cisco, Checkpoint and others' gear.
Stars: ✭ 63 (+26%)
Mutual labels:  cheatsheet
hackthebox
Notes Taken for HTB Machines & InfoSec Community.
Stars: ✭ 286 (+472%)
Mutual labels:  cheatsheet
tldr
Simplified and community-driven man pages (tldr-pages) in a single binary.
Stars: ✭ 33 (-34%)
Mutual labels:  cheatsheet
selenium-cheatsheet-java
A comprehensive list of selenium commands in Java
Stars: ✭ 20 (-60%)
Mutual labels:  cheatsheet
security-cheat-sheet
Minimalist cheat sheet for developpers to write secure code
Stars: ✭ 47 (-6%)
Mutual labels:  cheatsheet
Arduino-Cheat-Sheet
A cheat sheet for Arduino programming.
Stars: ✭ 120 (+140%)
Mutual labels:  cheatsheet

1 Golang CheatSheet

linkedin
github
slack


PRs Welcome

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: %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
NameComment
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

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

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

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

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: %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

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

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

1.17 Golang Networking

NameComment
golang httpcode/example-http.go

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

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

https://play.golang.org/

https://tour.golang.org/list

https://golang.org/doc/

https://github.com/a8m/go-lang-cheat-sheet

License: Code is licensed under MIT License.

linkedin github slack
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].