GO语言常用内置函数

常用内置函数

go语言中自带了很多功能强大的内置函数,这些函数都定义在builtin.go文件中

常用内置函数表格

内置函数 功能说明
append 将元素追加到切片,返回更新后的切片;若容量不足,则新分配一个底层数组
len 返回长度,取决于具体类型;字符串返回字节数;channel返回缓存元素的个数
cap 返回容量,取决于具体类型;切片返回底层数组长度;channel返回缓存容量
copy 切片复制,返回被复制的数量,即len(src)、len(dst)中较小的;支持字符串复制到字节切片
new 分配内存,返回类型指针;不初始化切片,map,channel
make 分配并初始化切片、map、channel对象
delete 根据键删除map中的元素
close 关闭channel;必须是双向channel或只发送channel;已关闭的channel在接收时第二参数返回false
panic 终止程序,引发异常 也就是宕机
recover
搭配defer函数中调用,捕获panic错误信息
complex 构建复数
real 返回复数的实部
imag 返回复数的虚部

可以从这里找到这些函数 Go语言标准库文档中文版 | Go语言中文网 | Golang中文社区 | Golang中国 (studygolang.com)

panic/recover

Go语言中目前是没有异常机制,但是使用panic/recover模式来处理错误。
panic可以在任何地方引发,但recover只有在defer调用的函数中有效。
首先来看一个例子:

func funcA() {
	fmt.Println("func A")
}

func funcB() {
	panic("panic in B")
}

func funcC() {
	fmt.Println("func C")
}

func processFuncDemo17() {
	funcA()
	funcB()
	funcC()
}

输出:

func A
panic: panic in B

goroutine 1 [running]:
main.funcB(...)
        D:/codelanguage/go/project/go_code1/main/hello.go:626
main.processFuncDemo17()
        D:/codelanguage/go/project/go_code1/main/hello.go:635 +0x66
main.main()
        D:/codelanguage/go/project/go_code1/main/hello.go:12 +0x17

程序运行期间funcB中引发了panic导致程序崩溃,异常退出了。这个时候我们就可以通过recover将程序恢复回来,继续往后执行。

func funcA() {
	fmt.Println("func A")
}

func funcB() {
	defer func() {
		err := recover()
		//如果程序出出现了panic错误,可以通过recover恢复过来
		if err != nil {
			fmt.Println("recover in B")
		}
	}()
	panic("panic in B")
}

func funcC() {
	fmt.Println("func C")
}

func processFuncDemo17() {
	funcA()
	funcB()
	funcC()
}

注意:

  1. recover()必须搭配defer使用。
  2. defer一定要在可能引发panic的语句之前定义。

版权声明:
作者:linrux
链接:https://www.tot7.cn/technology/go/480.html
来源:Code林
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>