Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
檀越@新空间
Coding Tree
提交
b28d0c5b
C
Coding Tree
项目概览
檀越@新空间
/
Coding Tree
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
Coding Tree
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
“d50f518161317424dc3c698d19af62f33cdd1a31”上不存在“paddle/git@gitcode.net:s920243400/PaddleDetection.git”
提交
b28d0c5b
编写于
10月 09, 2022
作者:
彭世瑜
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix
上级
2d9aa8a7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
380 addition
and
1 deletion
+380
-1
blog/golang/golang-standard-errors.md
blog/golang/golang-standard-errors.md
+78
-0
blog/golang/golang-standard-sort.md
blog/golang/golang-standard-sort.md
+299
-0
blog/golang/index.md
blog/golang/index.md
+3
-1
未找到文件。
blog/golang/golang-standard-errors.md
浏览文件 @
b28d0c5b
# Golang 标准库-errors
# Golang 标准库-errors
errors包实现了操作错误的函数
error结构
```
go
type
error
interface
{
Error
()
string
}
```
使用示例
```
go
package
main
import
(
"errors"
"fmt"
)
func
check
(
str
string
)
(
string
,
error
)
{
if
str
==
""
{
err
:=
errors
.
New
(
"字符串不能为空"
)
return
""
,
err
}
else
{
return
str
,
nil
}
}
func
main
()
{
s
,
err
:=
check
(
""
)
if
err
!=
nil
{
fmt
.
Printf
(
"err: %v
\n
"
,
err
.
Error
())
}
else
{
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
}
// err: 字符串不能为空
}
```
自定义异常
```
go
package
main
import
(
"fmt"
"time"
)
type
MyError
struct
{
When
time
.
Time
What
string
}
func
(
err
MyError
)
Error
()
string
{
return
fmt
.
Sprintf
(
"%v: %v"
,
err
.
When
,
err
.
What
)
}
func
oops
()
error
{
return
MyError
{
time
.
Date
(
2000
,
01
,
02
,
03
,
04
,
05
,
0
,
time
.
UTC
),
"my error"
,
}
}
func
main
()
{
err
:=
oops
()
if
err
!=
nil
{
fmt
.
Printf
(
"err: %v
\n
"
,
err
.
Error
())
}
// err: 2000-01-02 03:04:05 +0000 UTC: my error
}
```
\ No newline at end of file
blog/golang/golang-standard-sort.md
0 → 100644
浏览文件 @
b28d0c5b
# Golang标准库-sort
sort包提供了切片排序
排序示例
```
go
package
main
import
(
"fmt"
"sort"
)
func
main
()
{
s
:=
[]
int
{
3
,
4
,
1
,
2
}
sort
.
Ints
(
s
)
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [1 2 3 4]
}
```
## 接口
```
go
type
Interface
interface
{
Len
()
int
Less
(
i
,
j
int
)
bool
Swap
(
i
,
j
int
)
}
```
## 自定义排序
实现接口示例
```
go
package
main
import
(
"fmt"
"sort"
)
type
NewInts
[]
uint
func
(
n
NewInts
)
Len
()
int
{
return
len
(
n
)
}
func
(
n
NewInts
)
Less
(
i
,
j
int
)
bool
{
return
n
[
i
]
<
n
[
j
]
}
func
(
n
NewInts
)
Swap
(
i
,
j
int
)
{
n
[
i
],
n
[
j
]
=
n
[
j
],
n
[
i
]
}
func
main
()
{
s
:=
[]
uint
{
3
,
4
,
1
,
2
}
sort
.
Sort
(
NewInts
(
s
))
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [1 2 3 4]
}
```
## 浮点数切片
```
go
package
main
import
(
"fmt"
"sort"
)
func
main
()
{
s
:=
[]
float64
{
3.1
,
4.2
,
1.9
,
2.0
}
sort
.
Float64s
(
s
)
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [1.9 2 3.1 4.2]
}
```
## 字母字符串切片
```
go
package
main
import
(
"fmt"
"sort"
)
func
main
()
{
s
:=
[]
string
{
"tom"
,
"jack"
,
"steve"
}
sort
.
Strings
(
s
)
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [jack steve tom]
}
```
## 数字字符串切片
```
go
package
main
import
(
"fmt"
"sort"
)
func
main
()
{
s
:=
[]
string
{
"23"
,
"12"
,
"54"
}
sort
.
Strings
(
s
)
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [12 23 54]
}
```
## 中文字符串切片
```
go
package
main
import
(
"fmt"
"sort"
)
func
main
()
{
s
:=
[]
string
{
"喔"
,
"啊"
,
"饿"
}
sort
.
Strings
(
s
)
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [啊 喔 饿]
for
_
,
v
:=
range
s
{
fmt
.
Printf
(
"v: %v %v
\n
"
,
v
,
[]
byte
(
v
))
}
// 一个汉字占3个字节
// v: 啊 [229 149 138]
// v: 喔 [229 150 148]
// v: 饿 [233 165 191]
}
```
## 二维切片排序
```
go
package
main
import
(
"fmt"
"sort"
)
type
Array
[][]
int
// 实现接口
func
(
array
Array
)
Len
()
int
{
return
len
(
array
)
}
func
(
array
Array
)
Less
(
i
,
j
int
)
bool
{
// 按照第二个值进行比较
return
array
[
i
][
1
]
<
array
[
j
][
1
]
}
func
(
array
Array
)
Swap
(
i
,
j
int
)
{
array
[
i
],
array
[
j
]
=
array
[
j
],
array
[
i
]
}
func
main
()
{
s
:=
[][]
int
{
{
1
,
2
},
{
3
,
6
},
{
4
,
5
},
}
sort
.
Sort
(
Array
(
s
))
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [[1 2] [4 5] [3 6]]
}
```
## map切片排序
```
go
package
main
import
(
"fmt"
"sort"
)
type
MapSlice
[]
map
[
string
]
int
// 实现接口
func
(
ml
MapSlice
)
Len
()
int
{
return
len
(
ml
)
}
func
(
ml
MapSlice
)
Less
(
i
,
j
int
)
bool
{
// 按照age 年龄值进行比较
return
ml
[
i
][
"age"
]
<
ml
[
j
][
"age"
]
}
func
(
ml
MapSlice
)
Swap
(
i
,
j
int
)
{
ml
[
i
],
ml
[
j
]
=
ml
[
j
],
ml
[
i
]
}
func
main
()
{
s
:=
MapSlice
{
{
"money"
:
10
,
"age"
:
21
},
{
"money"
:
11
,
"age"
:
20
},
{
"money"
:
12
,
"age"
:
22
},
}
sort
.
Sort
(
s
)
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [
// map[age:20 money:11]
// map[age:21 money:10]
// map[age:22 money:12]
// ]
}
```
## 结构体切片排序
```
go
package
main
import
(
"fmt"
"sort"
)
type
People
struct
{
Name
string
Age
int
}
type
PeopleSlice
[]
People
// 实现接口
func
(
s
PeopleSlice
)
Len
()
int
{
return
len
(
s
)
}
func
(
s
PeopleSlice
)
Less
(
i
,
j
int
)
bool
{
// 按照age 年龄值进行比较
return
s
[
i
]
.
Age
<
s
[
j
]
.
Age
}
func
(
s
PeopleSlice
)
Swap
(
i
,
j
int
)
{
s
[
i
],
s
[
j
]
=
s
[
j
],
s
[
i
]
}
func
main
()
{
s
:=
PeopleSlice
{
{
Name
:
"Tom"
,
Age
:
21
},
{
Name
:
"Jack"
,
Age
:
20
},
{
Name
:
"Steve"
,
Age
:
22
},
}
sort
.
Sort
(
s
)
fmt
.
Printf
(
"s: %v
\n
"
,
s
)
// s: [{Jack 20} {Tom 21} {Steve 22}]
}
```
\ No newline at end of file
blog/golang/index.md
浏览文件 @
b28d0c5b
...
@@ -58,8 +58,10 @@
...
@@ -58,8 +58,10 @@
-
[
Golang标准库-builtin
](
/blog/golang/golang-standard-builtin.md
)
-
[
Golang标准库-builtin
](
/blog/golang/golang-standard-builtin.md
)
-
[
Golang标准库-bytes
](
/blog/golang/golang-standard-bytes.md
)
-
[
Golang标准库-bytes
](
/blog/golang/golang-standard-bytes.md
)
-
[
Golang标准库-errors
](
/blog/golang/golang-standard-errors.md
)
-
[
Golang标准库-errors
](
/blog/golang/golang-standard-errors.md
)
-
[
Golang标准库-sort
](
/blog/golang/golang-standard-sort.md
)
https://www.bilibili.com/video/BV1ME411Y71o?p=27&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
https://www.bilibili.com/video/BV1ME411Y71o?p=27&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
https://www.bilibili.com/video/BV1zR4y1t7Wj?p=93&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
\ No newline at end of file
https://www.bilibili.com/video/BV1zR4y1t7Wj/?p=95&spm_id_from=pageDriver&vd_source=efbb4dc944fa761b6e016ce2ca5933da
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录