Go 中文主页

先把这个教程看完 - Go 指南

然后就去写代码

完毕


go 语言常用的一些代码 (刷题

自定义排序

[【Go语言】基本类型排序和 slice 排序](https://itimetraveler.github.io/2016/09/07/【Go语言】基本类型排序和 slice 排序/)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package main

import (
"fmt"
"sort"
)

type Person struct {
Name string
Age int
}

// 按照 Person.Age 从大到小排序
type PersonSlice [] Person

func (a PersonSlice) Len() int { // 重写 Len() 方法
return len(a)
}
func (a PersonSlice) Swap(i, j int){ // 重写 Swap() 方法
a[i], a[j] = a[j], a[i]
}
func (a PersonSlice) Less(i, j int) bool { // 重写 Less() 方法, 从大到小排序
return a[j].Age < a[i].Age
}

func main() {
people := [] Person{
{"zhang san", 12},
{"li si", 30},
{"wang wu", 52},
{"zhao liu", 26},
}

fmt.Println(people)

sort.Sort(PersonSlice(people)) // 按照 Age 的逆序排序
fmt.Println(people)

sort.Sort(sort.Reverse(PersonSlice(people))) // 按照 Age 的升序排序
fmt.Println(people)

}

比较大小

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func max(a, b int) int {
if a > b {
return a
} else {
return b
}
}

func min(a, b int) int {
if a < b {
return a
} else {
return b
}
}

模拟C++的Vector

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* 一维
* 初始长度为空
*/
ans := make([]int, 0) // 相当于C++ vector<int> ans;
ans = append(ans, 23) // 相当于C++ ans.push_back(23);

/**
* 二维切片
* LeetCode 5280
*/
func groupThePeople(groupSizes []int) [][]int {
ans := make([][]int, 0) // 相当于C++ vector<vector<int> > ans;

cnt := make([][]int, 500) // 相当于C++ vector<int> cnt[500];

for i, v := range groupSizes {
cnt[v] = append(cnt[v], i) // 相当于C++ cnt[v].push_back(i);
if len(cnt[v]) == v {
ans = append(ans, cnt[v]) // 相当于C++ ans.push_back(cnt[v]);
cnt[v] = make([]int, 0) // 相当于C++ cnt.clear();
}
}
return ans
}

标题:Golang 学习
作者:tabris233
地址:http://39.100.224.149:8080/articles/2019/11/04/1572831884728.html

评论