go 内置函数

Go 的内置函数不拥有前面提到的go的标准类型,因此内置函数不能作为一个函数值赋值给函数类型的变量。 close close用于关闭一个channel,使用close函数要注意以下几点: 关闭一个只接受的channel会导致错误 在一个已经关闭的channel上发送数据会导致panic 关闭一个nil channel会导致panic 在一个channel关闭之后,如果channel已经没有剩余数据等待接受了,这时候如果继续接收,会返回一个channel对应数据类型的nil value,如果接收的时候使用多返回值,第二个参数表示一个channel是否已经关闭。 len和cap len和cap都接收多种类型的参数,返回值是int类型,具体接收哪些类型的参数以及返回的值的含义见下表 方法 参数 结果 len(s) string 字符串的字节长度 [n]T *[n]T 数组的长度(==n) []T slice的长度 map[K][T] map的长度,即有多少个key-value对 chan T 在channel里面有多少个等待接收的元素 cap(s) [n]T *[n]T 数组长度(==n) []T slice的capacity(预分配空间) chan T channel的buffer的长度 len,cap的返回值满足如下条件: 0<=len(s)<=cap(s) slice,map,channel的nil值的len为0 slice,channel的nil值的cap为0 new new函数的参数是一个类型,返回一个指向该类型的指针,并且进行0值初始化 call type result make(T, n) slice 创建一个T类型的slice且长度为n make(T, n, m) slice 创建一个T类型的slice且长度为n,capacity位m make(T) map 创建一个T类型的map make(T, n) map 创建一个T类型的map,且预分配n个空间 make(T) channel 创一个channel make(T, n) channel 创建一个拥有n长度的buffer的channel m>=n,且n和m必须是整型且不能为负数。 make make也根据不同参数类型和参数个数具有不同的含义,见下表 append append(s S, x …T) S 在slice后面追加元素,返回一个新的slice,新的slice可能指向不同的underlying array,所以调用append的时候一定要将其返回值赋值给slice,保证得到append之后的slice。 s = append(s, a) copy copy(dst, src, []T) int copy(dst []byte, src string) int copy返回拷贝的长度,会自动取最短的长度进行拷贝(min(len(src), len(dst))) delete 删除一个map指定key的元素 delete(m, k) panic,recover panic(interface{}) 直接调用panic或者是一个运行panic都会结束本次函数调用,函数中的defer将会被正常执行,panic如果不被recover将会导致程序崩溃 recover() interface{} 在defer的函数中调用recover,可以将调用defer的后面的函数体的panic恢复。 func protect(g func()) { defer func() { if x := recover(); x != nil { fmt.Println("run time panic:%v"x) } }() g() } 上面的代码中,如果在函数g中发生panic,那么recover将会返回panic的参数,如果panic的参数不是nil的话,则会将panic的参数输出。并且这种情况下,程序将会继续执行,只是g函数中panic之后的代码会被跳过。

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2017-08-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏nummy

python双端队列deque

由于deque是一种序列容器,因此同样支持list的一些操作,如用getitem()检查内容,确定长度,以及通过匹配标识从序列中间删除元素。

732
来自专栏武军超python专栏

2018-7-18pythoh中函数的参数,返回值,变量,和递归

********************************************************************************...

1234
来自专栏C语言及其他语言

[蓝桥杯]字符逆序

题目描述 将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 输入 输入包括一行。 第一行输入的字符串。 输出 输出转换好的逆序字符串。...

3495
来自专栏xingoo, 一个梦想做发明家的程序员

c++中类长度解析

通常我们定义一个类,它所占的空间有多大呢? 首先我们看一下下面的这个类 class A{ public: void func1(void){ ...

1855
来自专栏JetpropelledSnake

Python入门之函数的嵌套/名称空间/作用域/函数对象/闭包函数

本篇目录:     一、函数嵌套     二、函数名称空间与作用域     三、函数对象     四、闭包函数 ========================...

38310
来自专栏HTML5学堂

PHP入门-常量基本规则

PHP入门-常量基本规则 HTML5学堂:本文是PHP的入门用文章,主要介绍PHP的常量的基本规则以及定义和获取方法。 前几天把PHP的基本语法以及变量的基本规...

37415
来自专栏http://www.cnblogs.com

python 反射

通过字符串映射或修改程序运行时的状态、属性、方法, 有以下4个方法: hasattr(obj,name_str) 判断一个对象obj里是否有对应的name...

3739
来自专栏java小白

LinkedHashMap的accessOrder

1869
来自专栏北京马哥教育

17个案例带你3分钟搞定Linux正则表达式

正则表达式是一种字符模式,用于在查找过程中匹配制定的字符。 元字符通常在Linux中分为两类: Shell元字符,由Linux Shell进行解析; 正则表达式...

3464
来自专栏LEo的网络日志

python技巧分享(六)

2916

扫码关注云+社区