让咱们一块儿Go(九)

前言:

又很久么更新了,无奈公司项目多,本身又接了私活,因而时间更不够了......不过我是不会让它流产的,坚持!c#

1、Go语言中的函数

终于轮到函数了,其实也没有什么好说的,无非就是一个语法问题,c语言有c语言的语法,c#有c#的语法,那么Go语言的函数如何呢?在前面的文章中数组

其实已经看到过一些简单的函数了,今天咱们再来详细看看,因此请看下面:闭包

 在上述的代码中,咱们一共声明并定义了两个函数,一个是say,另外一个则是一个匿名函数,并且这里经过匿名函数,生成了一个函数闭包。在Go语言中函数

使用func关键字声明一个函数。所以,若是你要声明一个函数,立刻要想到func,无论是否是匿名函数,惟一的区别就是匿名函数后面没有函数名称了,直接spa

func(参数列表)(返回值)。从上面咱们也看到了,Go语言函数的返回类型在函数名的后面,和它声明变量的类型同样,这也与大部分语言不一样的。并且函数的返回值能够是一个,也能够多个。好比上面的say函数,咱们就返回了两个,一个整数类型,一个error。其中整数类型的是可变参数的长度,error类型则是从fmt包中Printf函数返回的值中的其中一个,并且咱们看到接受fmt.Printf()函数返回值的第一个变量咱们使用了"_"符号,这个表明咱们不关心第一个返回值,将它忽略。接下来再来看say函数的第二个参数,是一个...interface{}类型,三个点是Go语言的一种类型Slices,相似数组,可是有所不一样,这个将在后续文章中继续介绍,既然是一个相似数组的类型,固然也能够想到可变参数能够接收任意多个,可是必须是相同类型的,而这里使用一个空接口类型做为Slices的元素类型,使得能够接收任意类型参数的元素,以后能够经过缺省参数推断出每个元素真实的类型。接口