三、Go的函数

作者: 屉屉 | 来源:发表于2018-11-11 01:47 被阅读1次

    三、Go的函数

    Go语言最少有一个main()函数。

    1、Go的函数定义:

    func function_name( [parameter list] ) [return_types] {
       //函数体
    }
    

    2、函数参数

    函数如果使用参数,该变量可称为函数的形参。

    形参就像定义在函数体内的局部变量。

    调用函数的两种传参方式
    • 值传递

      值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

      
      func swap(x, y int) int {
         var temp int
      
         temp = x /* 保存 x 的值 */
         x = y    /* 将 y 值赋给 x */
         y = temp /* 将 temp 值赋给 y*/
      
         return temp;
      }
      
      swap(a, b)
      
    • 引用传递

      引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。

      func swap(x *int, y *int) {
         var temp int
         temp = *x    /* 保持 x 地址上的值 */
         *x = *y      /* 将 y 值赋给 x */
         *y = temp    /* 将 temp 值赋给 y */
      }
      
      /* 调用 swap() 函数
      * &a 指向 a 指针,a 变量的地址
      * &b 指向 b 指针,b 变量的地址
      */
      swap(&a, &b)
      

    3、函数的用法

    • 函数作为值。

      return math.Sqrt(x)

    • 函数闭包

      Go 语言支持匿名函数,可作为闭包。匿名函数是一个"内联"语句或表达式。匿名函数的优越性在于可以直接使用函数内的变量,不必申明。

      func getSequence() func() int {
         i:=0
         return func() int {
            i+=1
           return i  
         }
      }
      

      在函数 getSequence() 返回另一个函数。

    • 函数方法

      Go 语言中同时有函数和方法。一个方法就是一个包含了接受者的函数,接受者可以是命名类型或者结构体类型的一个值或者是一个指针。所有给定类型的方法属于该类型的方法集。

      type Circle struct {
        radius float64
      }
      
      //该 method 属于 Circle 类型对象中的方法
      func (c Circle) getArea() float64 {
        //c.radius 即为 Circle 类型对象中的属性
        return 3.14 * c.radius * c.radius
      }
      

    相关文章

      网友评论

        本文标题:三、Go的函数

        本文链接:https://www.haomeiwen.com/subject/jbztfqtx.html