课程名称:Go 语言语法进阶指南
课程章节:内建方法
课程讲师:Gavin
课程内容:
- panic&recover
package main
import "fmt"
func main() {
//Test for panic() and recover()
receivePanic()
}
// panic 抛出异常
func receivePanic() {
// 1.
// defer func() {
// message := recover()
// fmt.Println("panic message: ", message)
// }()
// panic("I am panic")
// 2.
defer coverPanic()
panic(errors.New("I am error"))
}
// recover 捕获异常
func coverPanic() {
message := recover()
switch message.(type) {
case string:
fmt.Println("string message case error : ", message)
case error:
fmt.Println("error message : " , message)
default:
fmt.Println("unknown panic : ", message)
}
}
- len&cop&close
package main
import "fmt"
func main() {
//Test for len() and cap()
getLen()
}
// len() cap() 测试长度与容量
func getLen() {
// 长度,容量
mIDSliceDst := make([]string, 2, 5)
mIDSliceDst[0] = "id-dst-1"
mIDSliceDst[1] = "id-dst-2"
mIDSliceDst= append(mIDSliceDst, elems:"id-dst-3")
fmt.Println(a: "mIDSliceDst len :",len(mIDSliceDst))
fmt.Println(a: "mIDSliceDst cap :",cap(mIDSliceDst))
}
// close() 创建和关闭chan
func closeChan() {
mChan := make(chan int, 1)
mChan <- 1
defer close(mChan)
// 业务代码
}
课程收获:
- len增长,cap会预判也做增长
- chan需要close;关闭了channel再写数据会报错
- defer是当前方法执行完之后的最后一个操作
- panic和recover最好能成对出现
- 小结