前言:
函数构成代码的逻辑执行结构。在Go语言中,函数的基本组成为:关键字func,函数名,参数列表,返回值,函数体和返回语句。声明:如果发现本文和七牛大神的GO宝典很像,纯属雷同,因为毕竟是笔记。代码可能一样,不过全是手敲验证 = =。
正文
函数定义:
在此我们用一个加法函数来进行案例说明:
package main import ( "errors" "fmt" ) func main() { z, i := Add(1, -9) fmt.Print(z, i) } func Add(a int, b int) (ret int, err error) { if a < 0 || b < 0 { //假设只支持正数加法 err = errors.New("Should be non-negative numbers") return } return a + b, nil //支持多重返回值 }
注意err除的return自动返回err,而ref返回默认值0.此程序返回:0 Should be non-negative numbers.
函数调用
Go语言中参数和函数名字大小写,代表其可见性,大写在包外可见,小写仅在包内可见。
假设Add在math方法中那么调用方式为:math.Add(1,2)
不定参数:
不定参数是指函数传入的参数个数为不定数量,为了做到这一点,需要先把参数定义为不定参数类型。
func myfunc(args ...int){//让我想起了es6的扩展运算符 //接受不定个数参数全部为int类型 }
不定参数的传递可以原样传递args…也可直接进行数组切片 args[1:]… 事实上,其本身就是一个数组切片。
任意类型的不定参数:
func Print(format,args...interface{}){ //使用interface{}传递任意类型数据是Go语言的惯例做法,使用interface{}是类型安全的,具 //体要后面学习到 }
多返回值问题:
func(num int)Test(a,b int)(z int,m string)//假设对z进行赋值,直接写return之后,会自动匹配到z,而error则返回默认值。
可以使用匿名函数,可以直接赋值给变量去执行。
func(arge a) int {//类似于js的即可执行函数。 var i int =5 fmt.Printf(i+a) return i }(3)//跟参数列表
后记:
接下来要学习错误处理章节,其实上面还有包含闭包的内容,由于我对闭包理解不够透彻,暂时就跳过了 = =。