Go语言之函数的学习

版权声明:本文为HCG原创文章,未经博主允许不得转载。请联系[email protected] https://blog.csdn.net/qq_39455116/article/details/82726347

GO语言 —–函数

A:单个返回值或者没有返回值

func function_name
    ( [parameter list] ) 参数列表,不是必须的,但是不传参数的时候必须有括号
    [return_types] 返回参数,不是必须的
 {
    函数体
 }

B:多个返回值,用括号
func function_name
( [parameter list] ) 参数列表,不是必须的,但是不传参数的时候必须有括号
([return_types]) 返回参数,不是必须的
{
函数体
}

      1.func main() {
       /* 定义局部变量 */
       var a int = 100
       var b int = 200
       var ret int

       /* 调用函数并返回最大值 */
       ret = max(a, b)

       fmt.Printf( "最大值是 : %d\n", ret )
    }

/* 函数返回两个数的最大值 */
        func max(num1, num2 int) int {
           /* 定义局部变量 */
           var result int

           if (num1 > num2) {
              result = num1
           } else {
              result = num2
           }
           return result 
        }

2.函数传入参数问题
1.正常传输参数
2.引用传参
func swap(x *int, y *int) {
var temp int
temp = x / 保持 x 地址上的值 */
x = *y / 将 y 值赋给 x */
y = temp / 将 temp 值赋给 y */
}
var a int = 100
var b int= 200

       fmt.Printf("交换前,a 的值 : %d\n", a )
       fmt.Printf("交换前,b 的值 : %d\n", b )

       /* 调用 swap() 函数
       * &a 指向 a 指针,a 变量的地址
       * &b 指向 b 指针,b 变量的地址
       */
       swap(&a, &b)

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

   package main
    import "fmt"

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

    func main(){
       /* nextNumber 为一个函数,函数 i 为 0 */
       nextNumber := getSequence()  

       /* 调用 nextNumber 函数,i 变量自增 1 并返回 */
       fmt.Println(nextNumber())
       fmt.Println(nextNumber())
       fmt.Println(nextNumber())

       /* 创建新的函数 nextNumber1,并查看结果 */
       nextNumber1 := getSequence()  
       fmt.Println(nextNumber1())
       fmt.Println(nextNumber1())
    }

    输出的结果是12312
package main
import "fmt"
func main() {
    add_func := add(1,2)
    fmt.Println(add_func(1,1))
    fmt.Println(add_func(0,0))
    fmt.Println(add_func(2,2))
} 
// 闭包使用方法
func add(x1, x2 int) func(x3 int,x4 int)(int,int,int)  {
    i := 0
    return func(x3 int,x4 int) (int,int,int){ 
       i++
       return i,x1+x2,x3+x4
    }
}
输出结果:
1 3 2
2 3 0
3 3 4

以上两个闭包的实例说明大函数里面的参数只会用一次,
小函数里面的参数在变化











         

猜你喜欢

转载自blog.csdn.net/qq_39455116/article/details/82726347