手记

【备战春招】第3天 Go语言语法进阶指南-错误与异常&长度与容量

课程章节:内建方法

课程讲师:Gavin

课程内容:

  1. 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)
    }
}
  1. 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)
    // 业务代码
}

课程收获:

  1. len增长,cap会预判也做增长
  2. chan需要close;关闭了channel再写数据会报错
  3. defer是当前方法执行完之后的最后一个操作
  4. panic和recover最好能成对出现
  5. 小结
0人推荐
随时随地看视频
慕课网APP