File me Issues or star this repo.
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: %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
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 |
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.7 Golang Code Structure & Common Algorithms
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.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 |
Name | Comment |
Format string | fmt.Sprintf("At %v, %s", e.When, e.What) |
Format string | fmt.Printf("int: %d, float: %f, bool: %t\n", 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 |
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
Name | Comment |
go mod | Link: go modules |
go get fix | GO111MODULE=off go get -fix ./... |
go mod replace url | go mod edit -replace… |
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 |
1.20 Golang Files & Folders
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 |
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.