吾八哥博客

您现在的位置是:首页 > 码农手记 > Golang > 正文

Golang

吾八哥学Golang(七):Golang里的函数

吾八哥2018-01-18Golang15997

       函数是组成代码结构的重要的一部分,在Go语言里函数由关键字func、函数名、参数列表、返回值、函数体、返回语句return组成。当然Golang里也是支持匿名函数的,匿名函数是不需要定义函数名的。同时Golang和Python一样也支持多返回值以及不定参数。需要注意的是函数名小写字母开头的只能在本包内可见,大写字母开头的才可以被其他的包使用。

函数的基本用法

来写个简单的例子熟悉下Golang里的函数的用法吧!如下:

package main

import (
   "fmt"
)

func Max(a, b int) int  {
   if a >= b {
      return a
   } else {
      return b
   }
}

func main()  {
   fmt.Println(Max(10,9))
}

在上面的代码中,就是一个求两个数的最大值的函数以及调用方法,这种写法跟其他语言里的没啥区别的,很好理解!

不定参数

Golang里函数支持同类型的不定参数,也支持不同类型的不定参数,先看个同类型的不定参数的用法:

package main

import (
   "fmt"
)

func Sum(args ...int) int  {
   s := 0
   for _, arg := range args {
      s = s + arg
   }
   return s
}

func main()  {
   fmt.Println(Sum(10,9,3,1))
}

上面代码运行后输出结果为“23”,再来看看不同的类型的不定参数的写法:

package main

import (
   "fmt"
)

func TestFunc(args ...interface{})  {
   for _, arg := range args {
      fmt.Println(arg)
   }
}

func main()  {
   TestFunc(1, "测试", true, 123.56, []int{11, 22, 33})
}

上述代码运行结果为:

1
测试
true
123.56
[11 22 33]

多返回值

Golang里的函数支持多返回值,意思就是一个函数可以有多个返回值,来看看具体的使用方法:

package main

import (
   "fmt"
)

func TestFunc(a, b int) (bool, int)  {
   var flag bool = false
   if (a > 0) && (b > 0) {
      flag = true
   }
   if a > b {
      return flag, a
   } else {
      return flag, b
   }
}

func main()  {
   fmt.Println(TestFunc(10, 9))
}

以上代码执行结果为:“true 10”,在Golang里其实还可以对返回值进行命名的,就跟参数命名一样,上面的写法可以改为:

package main

import (
   "fmt"
)

func TestFunc(a, b int) (flag bool, max int)  {
   if (a > 0) && (b > 0) {
      flag = true
   }
   if a > b {
      max = a
   } else {
      max = b
   }
   return 
}

func main()  {
   fmt.Println(TestFunc(10, 9))
}

对于多返回值,在调用的时候如果要忽略某个返回值的话则可以使用"_",在上面的TestFunc函数里有这种用法。

匿名函数

很多开发语言里支持匿名函数,匿名函数就如同变量一样被赋值或者调用,看看例子:

package main

import (
   "fmt"
)

func main()  {
   f := func(a, b int) int {
      if a > b {
         return a
      } else {
         return b
      }
   }
   fmt.Println(f(10, 7))
}

函数还有很多细节目前没接触到,后面学习的过程中还是要逐步加深理解!