Skip to content

Commit 6d7dfd6

Browse files
committed
20220331
1 parent dbe0bd4 commit 6d7dfd6

File tree

2 files changed

+65
-4
lines changed

2 files changed

+65
-4
lines changed

README.md

+2-4
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@
33

44
作者:[<a href="https://github.com/java-aodeng">低调小熊猫</a>]
55

6-
意义:分享知识,提升自己
7-
8-
目标:为了找个java-go双语言开发的**高工资**职位,突破突破自己
6+
地址:https://github.com/java-aodeng/golang-examples
97

108
<h1><a href="https://github.com/java-aodeng/golang-examples">Go语言从入门到放弃</a></h1>
119

@@ -43,7 +41,7 @@
4341

4442
[第15章 不一样的接口类型,一样的多态](https://github.com/java-aodeng/golang-examples/blob/master/go-15/empty_interface_test.go)
4543

46-
第16章 编写好的错误处理
44+
[第16章 编写好的错误处理](https://github.com/java-aodeng/golang-examples/blob/master/go-16/err_test.go)
4745

4846
第17章 panic和recover
4947

go-16/err_test.go

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
package go_16
2+
3+
import (
4+
"errors"
5+
"fmt"
6+
"strconv"
7+
"testing"
8+
)
9+
10+
//Go的错误机制
11+
//1、这里需要注意:go没有异常机制,都自己写判断实现的
12+
//2、error类型实现error接口 type error interface{Error() string}
13+
//3、可以通过errors.New来创建错误实例
14+
15+
//这里创建两个错误实列,这一步,类似于java的自定义异常
16+
var LessThanTwoError = errors.New("参数小于 2")
17+
var LargerThenHundredError = errors.New("参数大于 100")
18+
19+
//定义一个斐波那契列方法,这个方法前面做逻辑判断,返回自定义error实列
20+
func GetFibonacci(n int) ([]int, error) {
21+
//参数校验,不满足返回定义的自定义异常
22+
if n < 2 {
23+
return nil, LessThanTwoError
24+
}
25+
if n > 100 {
26+
return nil, LargerThenHundredError
27+
}
28+
fibList := []int{1, 1}
29+
//实现个小学数学题,斐波那契列方法
30+
for i := 2; i < n; i++ {
31+
fibList = append(fibList, fibList[i-2]+fibList[i-1])
32+
}
33+
return fibList, nil
34+
}
35+
36+
//优化处理,及早失败,避免嵌套,这一步类似于java的全局异常抓取处理
37+
func GetFibonacci2(str string) {
38+
var (
39+
i int
40+
err error
41+
list []int
42+
)
43+
//传入的参数string类型转换为int类型,转换不了,返回异常
44+
if i, err = strconv.Atoi(str); err != nil {
45+
fmt.Println("Error", err)
46+
return
47+
}
48+
//调用斐波那契列方法,异常不为空,返回异常
49+
if list, err = GetFibonacci(i); err != nil {
50+
fmt.Println("Error", err)
51+
return
52+
}
53+
fmt.Println(list)
54+
55+
}
56+
57+
//测试
58+
func TestGetFibonacci(t *testing.T) {
59+
//GetFibonacci2("test")//运行结果,类型转换失败异常 Error strconv.Atoi: parsing "test": invalid syntax
60+
//GetFibonacci2("1")//运行结果,参数校验异常 Error 参数小于 2
61+
//GetFibonacci2("101") //运行结果,参数校验异常 Error 参数大于 100
62+
GetFibonacci2("10") //运行结果,运行正常,实现斐波那契列 [1 1 2 3 5 8 13 21 34 55]
63+
}

0 commit comments

Comments
 (0)