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()
}
注意:
recover()
必须搭配defer
使用。defer
一定要在可能引发panic
的语句之前定义。
版权声明:
作者:linrux
链接:http://www.tot7.cn/technology/go/480.html
来源:阿信博客
文章版权归作者所有,未经允许请勿转载。
THE END
二维码
文章目录
关闭
共有 0 条评论