LOFTER for ipad —— 让兴趣,更有趣

点击下载 关闭
GO语言-----函数(持续更新)

使用tyep关键字定义一个底层类型为函数类型的自定义类类型一、认识

Go语言,函数是没有接收者的,但方法有

二、声明基本类型

基本结构:(main()函数是无参数,无返回值的) 
func function_name( [parameter list] ) [return_types] { 
   函数体 

->function_name:函数名称,函数名和参数列表一起构成了函数签名。 
->parameter list:参数列表,指定的是参数类型、顺序、及参数个数。参数是可选的,即函数可以不包含参数。参数就像一个占位符,这是参数被称为形参,当函数被调用时,将具体的值传递给参数,这个值被称为实际参数。 
->return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。这里需要注意的是Go函数支持多返回值。有些功能不需要返回值,这种情况下 return_types 不是必须的。 
->函数体:函数定义的代码集合,表示函数完成的动作。 

三、传递
1) 使用tyep关键字定义一个底层类型为函数类型的自定义类类型

func add(a, b int) int {
     returna + b
}

func sub(a, b int) int {
    returna - b
}

type Op func(int, int) int

func do(f Op, a , b int) int { 
    //f理解为一个新的函数名,类型是Op,纯属自我理解,为了方便记忆,调用时直接对f传函数名
    return  f(a, b)
}

func main() {
   a := do(add, 1, 2)
   fmt.Println(a)
   s := do(sub, 1, 2)
   fmt.Println(s)
   f := add //将add函数赋值给f,理解为重命名
   sum := f(3, 5)
   fmt.Println(sum)
}

2)作为参数
**只要被调用函数的返回值个数, 返回值类型和返回值顺序与调用函数所需求的实参一致,就可以把这个被调用函数当做其他函数的参数
func f1(a, b, c int)==>需求三个实参
func f2(a, b int)(int, int, int)==>返回值3个
func f1(f2(a, b))

四、匿名函数【匿名函数由一个不带函数名的函数声明和函数体组成】
    GO语言的匿名函数(anonymous function),其实就是闭包.是指不需要定义函数名的一种函数实现方式, 可以包含自由(未绑定到特定对象)变量的代码块,这些变量不在这个代码块内或者任何全局上下文中定义,而是在定义代码块的环境中定义。
    要执行的代码块(由于自由变量包含在代码块中,所以这些自由变量以及它们引用的对象没有被释放)为自由变量提供绑定的作用域。

func(a, b int, z float64) bool{
         return a*b
}

推荐文章
评论(0)
分享到
转载我的主页