千锋GO教程:1.知名编程语言或系统的发展简史-【千锋教育】Go语言 基础+进阶+高级(学完可就业/2019版)-连载中
热门回复:
- mxbmxl:还是韩茹老师讲得好,期待韩茹老师的框架和项目实战教程
- 王静俊28:花了一个月零20天,学完韩顺平老师的391个视频,最近两天刚看完韩茹老师的go包进阶版,打算花最近一周的晚上复习下基础版;期待老师的高级教程......[喜欢]
谢谢老师,老师辛苦了[微笑]
- 虔诚信徒2oy:我写了一个高效的Go语言缓存框架
github地址 https://github.com/xy63237777/channel-cache
里面有详细的代码设计和思想.
也希望大家可以加入自己的优化和想法
看完这个代码相信你多少会内力大声. 当然你也可以加入自己的东西自己拿来使用
- 小洲哥_:看了一下午韩顺平老师的视频,发现我一下午学了啥,我开了两倍速,加快进,看了33节,然后才发现才开始讲变量,中途很多废话,还是这个讲的清晰讲的好
- mxbmxl:package main
import (
"fmt"
"math"
)
type areaError struct {
errMsg string
radius float64
}
//实现error接口,就是实现Error方法,该方法返回字符串
func (e *areaError) Error() string {
return fmt.Sprintf("error:半径, %.2f, %s", e.radius, e.errMsg)
}
//根据半径计算圆面积函数,注意,第二个返回值是go内置的 error 类型
func circleArea(radius float64) (float64, error) {
if radius < 0 {
//返回error对象指针
return 0, &areaError{errMsg: "半径不合法", radius: radius}
}
return math.Pi * math.Pow(radius, 2), nil
}
func main() {
r := -3.5
s, err := circleArea(r)
if err != nil {
fmt.Println(err.Error())
//错误值其实就是错误对象调用Error方法执行的结果
fmt.Printf("错误类型:%T, 错误值:%s\n", err, err) //err
//错误对象的类型断言
if ae, ok := err.(*areaError); ok {
fmt.Printf("断言后错误类型:%T,错误信息:%s", ae, ae.errMsg)
}
return //结束主函数的执行
}
fmt.Printf("圆面积:%.2f\n", s)
}打印结果:
error:半径, -3.50, 半径不合法
错误类型:*main.areaError, 错误值:error:半径, -3.50, 半径不合法
断言后错误类型:*main.areaError,错误信息:半径不合法