这是我参与「第五届青训营 」伴学笔记创作活动的第 3 天
这次从错误处理开始
go语言3:
语法
错误处理
不同于Java的捕获异常,以及java的三大异常类。go语言的错误处理方式,能清晰地知道哪个函数返回了错误,并且能用简单的 if else 来处理错误。
golang中的错误处理比java更好理解更加简单,仅仅是用一个err类的方法来返回错误信息
具体使用方法看以下代码即可
func Err() {
println("this is Err")
x := []userErr{{name: "xuan", pwd: "xuan123"}}
fmt.Println("以下分别查找为xuan,kukuku的名字的用户")
v, error := getUser(x, "xuan")
fmt.Println(v, error)
v, error = getUser(x, "kukuku")
fmt.Println(v, error)
}
type userErr struct {
name string
pwd string
}
func getUser(users []userErr, name string) (v *userErr, err error) {
for _, u := range users {
if u.name == name {
return &u, nil
}
}
return nil, errors.New("未查询到,请重试")
}
结果如下
this is Err
以下分别查找为xuan,kukuku的名字的用户
&{xuan xuan123} <nil>
<nil> 未查询到,请重试
字符串相关操作
如图
常见方法有:包含、计数、以...开头/结尾、索引、添加字符、重复、改变某个/全部字符大小写、删除某个字符、求字符串长度等
%v
在golang中,%v能够代替c中的%s、%d、%f等等,无需开发者自己判断所要打印出来的是什么类型
甚至%+v、%#v能够打印出更加详细的内容
时间
在golang中,time.now()是最为常用的,可获取当前时间段:
2023-01-22 14:35:47.7462332 +0800 CST m=+0.006778601
func Time() {
println("this is Time")
now := time.Now()
fmt.Println("time.now:", now)
fmt.Println(now.Date())
fmt.Println(now.Year())
fmt.Println(now.Hour())
fmt.Println(now.Format("2006-01-02 15:04:05"))
}
这段代码解释了如何获取当前时间,当前时间的年月日小时等
但是Format方法(时间格式化)有一个需要特别注意的地方,格式化时,你的layout必须是对应2006-01-02 15:04:05这段时间
也正因如此,golang才能区分开你要的是年还是小时还是分钟
而对于为什么是这个时间2006-01-02 15:04:05,官方也给出了一个很合理的解释:
这段时间可以写为Jan 2 15:04:05 2006 MST,恰恰对应1 2 3 4 5 6 -7
数字与字符串
在golang中,用 Atoi 把一个十进制字符串转成数字,用 itoA 把数字转成字符串。
即 数字+itoA=字符串,字符串+Atoi=数字
而对于数字直接的处理,golang提供了一个strconv包,如下图